如何在 MVC Web API 2 URL 参数中容纳点字符
在 MVC Web API 2 应用程序中,可能需要允许 URL参数包含点字符(“.”),以与某些 URL 格式兼容。但是,默认情况下,框架将点视为路由分隔符,并在存在这些字符时生成 HTTP 404 错误。
问题:
以下 URL,它尝试检索 ID 为“staff.33311”的人,抛出 404错误:
http://somedomain.com/api/people/staff.33311
默认路由配置:
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );
此路由配置假设“id”是单个段,并且内部不允许有点
解决方案:
要允许 URL 参数中包含点,您可以在 URL 后面附加一个斜杠。这向 ASP.NET MVC 发出信号,表明该参数将继续超出第一个段。
http://somedomain.com/api/people/staff.33311/
通过添加斜杠,路由将变为:
api/{controller}/{id}/{trailingSegment}
ASP.NET MVC 现在将解释“staff.33311”作为“id”的值
示例
使用更新的路由配置,PeopleController 中的以下代码将成功处理带有点字符的 URL:
public IHttpActionResult GetPerson(string id) { var person = _people.FirstOrDefault(p => p.Id.ToLower().Equals(id.ToLower())); if (person == null) return NotFound(); return Ok(person); }
以上是如何处理 MVC Web API 2 URL 参数中的点字符?的详细内容。更多信息请关注PHP中文网其他相关文章!