gleam-lang/http

`path_segments` should not include query or fragment with the final segment

lpil opened this issue ยท 4 comments

lpil commented
/one/two?three=four#five

Should return

["one", "two"]

@lpil I would love to take a crack at this one! I am wondering if this should be fixed in the gleam/http/request module or in the stdlib's gleam/uri module here?

Or would it be better to prevent the query and fragment from ever ending up in the request.path at all? As in, handle this in the from_uri function, which seems to be the only way to get a Request type.

lpil commented

Hey @mrkutly ! Thanks for your help. I think we should avoid having the query in the path at all

Sounds good! @lpil Do you have steps to reproduce the case where you were seeing query strings show up in the Request path?

Update: this appears to be handled by the erlang uri_string:parse function here

I tried to recreate locally by making a quick webserver and making requests to:

  • localhost:3000/path/is/here?query=true#fragment
  • localhost:3000/path/is/here?query=true
  • localhost:3000/path/is/here#fragment

Doing request |> path_segments |> io.debug always printed [<<"path">>,<<"is">>,<<"here">>] as expected.

lpil commented

I thin this may have been a bug in the gleam_elli library which was since fixed.

Looks like we are confident everything works here now so we can close this ticket. Thank you for your investigation ๐Ÿ’œ