允许在 Web API 参数中使用特殊字符

Posted

技术标签:

【中文标题】允许在 Web API 参数中使用特殊字符【英文标题】:Allow special characters in Web API parameters 【发布时间】: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

【问题讨论】:

【参考方案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")]

【讨论】:

能否请您详细说明一下或提供一些有关此信息的链接

以上是关于允许在 Web API 参数中使用特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

如何验证 UITextView 以使其不允许像“&”这样的特殊字符?

面试题:SQL注入漏洞总结

如何处理JSON中的特殊字符

这里 REST API 返回特殊字符,如“ß”,即使设置了 language=en 参数

特殊字符的过滤,防止xss攻击

如何在 Angular 7 中对包含特殊字符的查询参数进行编码?