为何Spring RestTemplate调用含双斜杠的API URL可正常工作?
RestTemplate与curl处理双斜杠URL的差异原因
RestTemplate底层依赖
UriComponentsBuilder处理URL,会自动执行URL标准化操作:当检测到路径中存在连续斜杠(比如//api)时,会将其合并为单个斜杠,最终发送的请求URL是https://example.com:9876/api/v2/getNodes,这和服务器的路由规则匹配,所以能正常返回结果。curl则会完全按照你输入的原始URL发送请求,不会自动处理双斜杠。服务器收到
https://example.com:9876//api/v2/getNodes后,会将//api作为路径的一部分去匹配路由,而服务器的路由配置通常是针对/api/v2/getNodes的,自然匹配失败返回404。
简单来说,就是Spring帮你自动修正了不规范的URL,而curl严格遵循你输入的内容发送请求,这才导致了两种工具调用结果的差异。
内容的提问来源于stack exchange,提问作者Deepak Yadav
相关产品推荐
相关产品推荐

