ホームページ > バックエンド開発 > C++ > MVC Web API 2 URLパラメータでドット文字を処理するにはどうすればよいですか?

MVC Web API 2 URLパラメータでドット文字を処理するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-05 08:11:44
オリジナル
240 人が閲覧しました

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 は解釈するようになります。 「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート