是否可能有一个带有&符号的REST url参数

本文关键字:符号 REST url 参数 有一个 是否 | 更新日期: 2023-09-27 18:07:23

使用系统。我有一个REST服务和一个简单的模板,看起来像

" {searchTerm} ?选择= {someSearchOpt}

所以调用看起来像:

http://myhost.contoso.com/searchapi/river%20expeditions

在没有选项的情况下搜索短语"river expeditions"。

这只是接受一个搜索短语并返回结果。它工作得很好。但是,如果搜索包含文字&符号的短语,例如"Lewis&Clark",我尝试使用url编码&符号

路易斯% 26克拉克

,但即使这样,请求甚至从未被路由,但服务器立即返回一个400 Bad request。很明显,它被解释为一个查询字符串分隔符,并使请求无效,因为这个特定的模板期待一个url参数,没有前面的'?的分隔符。

由于这些搜索短语可能有其他受限制的字符,因此它们被客户端编码为url,当它们被成功路由时,REST api调用HttpUtility。参数上的UrlDecode。所以我的问题是,如果有一些技术得到一个url编码与符号正确路由为rest url参数,而不是先发制人的解释和拒绝作为查询字符串分隔符?

更新:根据记录,如果期望搜索词作为查询字符串参数(而不是url参数),则发送Lewis%26Clark可以正常工作。例如

http://myhost.contoso.com/searchapi?searchTerm=lewis%26clark

所以澄清一下,我希望在REST模板中使用url参数时获得相同的结果。

是否可能有一个带有&符号的REST url参数

这个线程有一个类似的问题'解决方案。

正如上面链接的答案所提到的,我会避免在uri中使用url编码字符,而是将它们放在查询字符串部分。