1.路由参数中的正斜杠
Posted
技术标签:
【中文标题】1.路由参数中的正斜杠【英文标题】:1. Forward slash in routing parameter 【发布时间】:2020-05-29 05:19:23 【问题描述】:我有一个 GET 端点,它将用户名作为参数。下面是动作
[Route("user/userName")]
public User GetUserByName([FromUri] string userName)
// logic here
这就是我提出请求的方式。
var restClient = new RestClient("uri");
var request = new RestRequest("user/" + userName);
var response = restClient.Execute(request);
在出现名称包含正斜杠的用户之前,它适用于所有情况。 例如:Akbar/Badhusha 然后请求看起来像 user/Akbar/Badhusha
这导致请求返回Not Fount错误
我尝试使用 AddQueryParameter 方法添加参数。全部返回 Not found 错误。
-
我也试过HttpUtility.UrlEncode
还尝试将 / 替换为 %2f
也试过 user?userName=Akbar/Badhusha
他们都失败了。
有没有办法让它工作?
【问题讨论】:
如果您作为查询字符串发送,它是否有效?例如user?userName=Akbar/Badhusha
@MKR,它没有。
你需要对你的userName
进行URL编码。
如果您从参数中删除 [FromUri]
属性,user?userName=Akbar/Badhusha
将起作用。
您需要允许双重转义并手动解码。见here。
【参考方案1】:
尝试从参数中删除[FromUri],如下所示,
[Route("user")]
public User GetUserByName(string userName)
// logic here
请求可能看起来像,
user?userName=Akbar/Badhush
【讨论】:
以上是关于1.路由参数中的正斜杠的主要内容,如果未能解决你的问题,请参考以下文章