首頁 >後端開發 >C++ >如何處理 MVC Web API 2 URL 參數中的點字元?

如何處理 MVC Web API 2 URL 參數中的點字元?

Patricia Arquette
Patricia Arquette原創
2025-01-05 08:11:44281瀏覽

How to Handle Dot Characters in MVC Web API 2 URL Parameters?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn