-
-
Notifications
You must be signed in to change notification settings - Fork 104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Why is this.path
set to undefined instead of path
?
#122
Comments
Related expressjs/express#5961 |
It seems that Let me explain my thought process: Layers are added to the Router instance when the The We can't know which of the possible To address the issue discussed in express#5961, perhaps we could add an extra property to the Layer instance, such as @pillarjs/express-tc, can we get your input on this matter? |
Thank you for the explanation @carpasse. I still have some confusion, for example, the actual matching against a request's path happens at runtime. However, if we set the Edit: Since the PS: I really have very little idea, I am trying to get a better understanding. Edit: I wonder whether any other part depends on |
@IamLizu I believe the
Additionally, the
|
cc @wesleytodd as repo captain |
Yep pretty much what @carpasse has said. One thing I might ask is "what is the goal of the question"? Did you have an outcome you are looking to achieve, or is this more about exploration and learning? If the goal is listing all the routes (as is referenced near the top) then there are a bunch of discussions on that that might provide more context. But before spending time (I still have nearly 300 issues I am trying to catch up on), can I ask for a more clear explanation of the goal? |
Thanks @carpasse for the explanation. I will read thoroughly and get back you if I still have questions. @wesleytodd actually the outcome is nothing else than listing the routes. It appears setting the |
I wanted to chime in on the discussion to provide a bit more context on why something proposed by @IamLizu might be needed. Wesley's package I tried to reverse-engineer the package and fix the issue myself. It actually works pretty well, except for the fact that there is no way of obtaining paths for registered middleware (nested routers for instance!). To come back to Wesley's original question, the goal of adding some kind of static path property would be to allow to generate OpenAPI docs in a reliable way. The actual grunt work that might be necessary to get rid of wildcards or other things mangling the path string(s) in a way that's incompatible with the OpenAPI spec might then simply be left to the user. This, at least in theory, doesn't create much additional work to maintain and provides users with an ergonomic way of obtaining paths for routers. |
Ah yes, one of my goals over the next weeks is to update that open api package. I was just slammed with other things through the end of last year. @mxngls if you are interested in helping with that work I might be able to give a few pointers. Honestly I think express/router itself should have some better apis for this kind of thing so that third parties dont have so much work to do for compatibility in as we make future changes. So might be we could work on landing that kind of stuff here as well to help. |
Thank you for your swift response @wesleytodd. Actually I already came up with a solution, that works quite well. I might have time to publish the refactored package over the weekend. I think to get rid of regular expressions for paths was a good decision overall. The work that was necessary to correctly parse these paths with regular expressions seems incredible convoluted and quite error prone. I intend to make the first version only compatible to Express version 5 and upwards for the same reasons. What is still left to do is to transform the paths as used by Express to something that is accurate to the OpenAPI specification. I don't think this will prove to be too cumbersome, as we only need to adjust the syntax for regular and optional parameters. Wildcard parameters are not conform to the spec anyway. I would love to ping you again and if possible get some input from your side. The package itself is written in Typescript and considerable leaner than the original express-openapi package written in Javascript. But I think it would be better to move that talk into a separate discussion as it's not really an issue. Lastly I fully agree regarding your comments on adding some proper APIs to Express so that obtaining router paths is not as arduous as it is right now. |
Can someone please help me understand why
this.path
is set toundefined
?router/lib/layer.js
Line 43 in 2e7fb67
I had checked the router Layer, and the path was
undefined
in almost every route, that shouldn't be the case, right?While I don't know the reason of it being set to
undefined
initially, I can suggest it should be set topath
. I have noticed that thepath
on Layer is no longer undefined if we set,Instead, it gets correct path such as
/users
or whatever the path actually is.The text was updated successfully, but these errors were encountered: