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.路由参数中的正斜杠的主要内容,如果未能解决你的问题,请参考以下文章

URL 中带有斜杠“/”的路由参数

vue 路由器/:带斜杠的参数

允许没有参数的 Symfony2 路由的尾部斜杠?

最后一个参数中的正斜杠导致批处理文件目录的路径(“%~dp0”)改变

react-router 路由中的尾部正斜杠

python中的正斜杠反斜杠