如何在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中文網其他相關文章!