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 は解釈するようになります。 「id」の値として「staff.33311」
例
更新されたルート構成を使用すると、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 中国語 Web サイトの他の関連記事を参照してください。