【问题标题】:Allow special characters in Web API parameters允许在 Web API 参数中使用特殊字符
【发布时间】:2015-04-18 20:36:15
【问题描述】:

我需要能够处理REST 调用中的特殊字符。特别是 ./ 字符。

例如我有一个GET 路由/api/division/{someDivision}。现在,使用/api/division/West Canada/ 的参数调用这条路线,我得到了一个回报,一切都按预期工作。但是,我需要能够支持其他名称为“美国西南地区”的业务部门和“北美/南美”。通过我的路由传递这些参数会通过 api 返回一个404,因为我认为http 处理程序认为./ 字符使它认为我指的是另一个域或目录。有没有办法解决这个问题,以便我可以传递所需的参数?

路线:

[HttpGet]
[Route("{division}/information")]
public IHttpActionResult DivisionInfo(string division)
{ 
  ...omitted for brevity

【问题讨论】:

    标签: rest asp.net-web-api special-characters asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    您可以尝试这样设置路线:

    [HttpGet]
    [Route("/api/information")]
    public IHttpActionResult DivisionInfo(string division)
    

    那你可以拨打GET http://website.com/api/information?division=text.with/special./characters

    【讨论】:

    • 有没有办法做到并保持通话RESTful?
    • 为搜索字符串添加查询参数并没有什么非 RESTful 风格。本文给出了一个这样做的路由示例:vinaysahni.com/…
    【解决方案2】:

    尝试在参数前添加[FromUri]

    Route("api/Person/{ID}/[FromUri]{UserName}")]
    

    【讨论】:

    • 能否请您详细说明一下或提供一些有关此信息的链接
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多