gpt4 book ai didi

c# - 是否可以使用带符号的 REST url 参数?

转载 作者:太空狗 更新时间:2023-10-29 23:46:38 25 4
gpt4 key购买 nike

使用 System.ServiceModel 库进行路由,我有一个带有简单模板的 REST 服务,如下所示

"{searchTerm}?opt={someSearchOpt}

所以调用看起来像:

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

不带选项地搜索短语“river expeditions”。

这只接受搜索词组并返回结果。它工作得很好。但是,如果搜索包含字面符号的短语,例如“Lewis&Clark”,我尝试了明显的 url 编码符号

Lewis%26Clark

但即便如此,请求也从未被路由,但服务器立即返回 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 参数时获得相同的结果。

最佳答案

This线程有类似的问题\解决方案。

如上述链接的答案中所述,我会避免在 uri 中对字符进行 url 编码,而是将它们放在查询字符串部分。

关于c# - 是否可以使用带符号的 REST url 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15823778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com