weavejester / compojure

A concise routing library for Ring/Clojure
Eclipse Public License 1.0
4.08k stars 259 forks source link

Extract unparsed path from context #207

Open Nivl opened 2 years ago

Nivl commented 2 years ago

When extracting a route path using (:compojure/route req) we can retrieve the raw unparsed path. So for example if my path is /hello/:name and a user hits /hello/world, I can retrieve /hello/:name. This is extremely useful for tracing and to capture metrics in general.

Now the issue is that this isn't (doesn't seem?) doable when using a context. For example, given this context:

(context "/nested/:greeting" [_]
           (GET "/world" [_] {:status 200}))

If a user hits /nested/hello/world, we can retreive /nested/hello from the request (in the :context), but not /nested/:greeting.

Our goal is to have the /nested/:greeting/world string available for our telemetry data.

It would be amazing if this could be supported.

weavejester commented 2 years ago

The :uri key will give you the full path.

Nivl commented 2 years ago

@weavejester :uri would provide the full parsed path. For example instead of providing me with /nested/:greeting/world it would provide /nested/hello/world.

weavejester commented 2 years ago

Ah, apologies, I misread and you're right that this isn't currently supported. I would be fine with a PR that adds a :compojure/full-route key to the request map.