如何将绝对文件路径作为REST API搜索接口参数传入?
解决方法
先看你的示例调用GET /test/services/search//tmp/abc.png,这里的核心是search接口的参数需要以斜杠开头,且在URL中通过双斜杠区分接口路径与参数路径。以下是两种可行的调用方式:
方式1:沿用示例的双斜杠格式
直接使用和示例一致的URL:
GET /test/services/search//tmp/abc.png
search/后面的/tmp/abc.png会被服务端完整解析为参数,和示例逻辑一致,能正确匹配到目标文件。
方式2:对路径进行URL编码
将参数/tmp/abc.png中的斜杠替换为URL编码%2F,得到编码后的参数%2Ftmp%2Fabc.png,调用URL为:
GET /test/services/search/%2Ftmp%2Fabc.png
服务端会自动解码该参数,还原为/tmp/abc.png,从而正确检索文件。
为什么之前的尝试无效?
- 带引号的调用:
GET /test/services/search/"/tmp/abc.png",服务端会把包含引号的字符串当作参数,而非原始路径,导致文件查找失败。 - 转义斜杠的调用:
GET /test/services/search/\/tmp\/abc.png,URL中不需要这种转义,服务端会将\/视为普通字符,解析出的参数是\/tmp\/abc.png,不是正确路径。 - 大括号包裹的调用:
GET /test/services/search/{/tmp/abc.png},大括号在URL中无特殊解析作用,服务端会把{/tmp/abc.png}当作参数,无法匹配目标文件。
内容的提问来源于stack exchange,提问作者TSFH
相关产品推荐
相关产品推荐

