Closed andras-pinter closed 2 months ago
Whether there's a trailing slash or not, any code formatting URLs using the endpoint should handle that. It's just as likely that some code erroneously expects a trailing slash, doesn't append on, and ends up with an invalid URL. Besides, in most cases services should canonicalize paths.
I'm reluctant to take this one. Is there some common issue you're seeing with code not appending paths to endpoints with a trialing slash? Can those be fixed? That seems the crux of the problem.
Hey @heaths,
Yes, there is a particular error, what I recently encountered. Please see: https://github.com/Azure/azure-sdk-for-rust/issues/1664
@ctaggart could you review this? If you're good with it, I can regenerate the service crates.
My goal was to let azure_core::Url
handle URL creation :)
@ctaggart could you review this? If you're good with it, I can regenerate the service crates.
Sounds good. Please go ahead.
I'm facing this exact issue when trying to use the azure web pub sub crate.
I'm happy to help out but it seems like the change just needs to be merged? Can someone help push this through please?
To give more context, I have my azure web pubsub endpoint as "https://<service>.webpubsub.azure.com"
. It then gets into this line of code
let mut url = azure_core::Url::parse(&format!("{}/api/hubs/{}/:generateToken", self.client.endpoint(), &self.hub))?;
When I set a breakpoint here, it was showing https://<service>.webpubsub.azure.com//api/hubs/...
instead of https://<service>.webpubsub.azure.com/api/hubs/...
.
The error I get back is "server returned error status which will not be retried: 404"
I made this as a PR instead of a draft. Still facing some issues, if somebody please help me finish this would be really nice! Thanks!
Most of the issues were with nightly tests failing due to evolving lints. Checking if a rebase on main
fixes them first.
@microsoft-github-policy-service agree
🎉 Thanks everyone!
When returning a URL from Client::endpoint the URL contains a tailing slash in any case. This is handled by the URL lib which will append the tailing slash to the end upon calling Display::fmt. Therefore formatting the returned URL from Client::endpoint will result in a duplicated slash, which could cause some (not all) Azure endpoints to have some trouble.
For example: Base URL: https://some-app-conf.azconfig.io/ AppConfigUrl: https://some-app-conf.azconfig.io//keys?api-version=2023-10-01 This resulted in a 404 response.
Removing the tailing slash from the base endpoint's URL manually does not solve the problem, due to the reason mentioned above.
This patch applies a fix to append (set) the formatted path via rust URL lib, which will handle the duplicated slash (or any other problem).
Although I tried to locally generate
mgmt
andsvc
crates, I encountered some problems, andautorust
removed and added a bunch of new files and modules. So I'd like to ask somebody to help me out with the generation.