Skip to content

Add an "append_path" and "append_path_mut" functions to Url#1116

Open
avsaase wants to merge 5 commits intoservo:mainfrom
avsaase:add-append-path-to-url
Open

Add an "append_path" and "append_path_mut" functions to Url#1116
avsaase wants to merge 5 commits intoservo:mainfrom
avsaase:add-append-path-to-url

Conversation

@avsaase
Copy link
Copy Markdown

@avsaase avsaase commented Apr 22, 2026

This PR replaces #934 with the following changes:

  1. I rebased the branch from @cbeck88 on the latest main.
  2. I addressed the review comments from @carlocorradini regarding the doc comments. I also changed the reference to other doc items to use proper links.
  3. I renamed the method to append_path_mut and introduced a new append_path that takes &self and returns Result<Self, ()> so that it's a true drop-in replacement for Url:join. The requires cloning the url. I think this is acceptable but it the maintainers disagree I can revert this change.

cbeck88 and others added 5 commits April 22, 2026 13:56
this function is an alternative to `Url::join` which addresses issues
discussed in servo#333, mainly that `Url::join` is sensitive to trailing
slashes is in the `Url`, and if the trailing slash is missing, may
remove segments from the base url and replace them with segments
from the joined `Url`.

There are good reasons for `Url::join` to behave that way, because
that is was is specified in the `Url` standard.

However it's still inconvenient because it often leads to situations
where, a service takes some base-url for some API as a config parameter,
uses `Url::join` to append various routes to it and make requests, and if
a trailing `/` is omitted in a config file, you don't figure it out until
deploying and looking at logs and seeing nonsense requests failing.
In many situations in web development these trailing `/` are not significant
so this is easy to forget and can become just an annoying papercut.

One suggestion in servo#333 was to add an alternative utility function that
isn't sensitive to the trailing `/`'s in this way.
This commit adds such a utility function with tests.
@avsaase avsaase changed the title add an "append_path" function to url Add an "append_path" and "append_path_mut" functions to Url Apr 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants