0

次のコードを使用すると:

public HttpResponseMessage Get()
{
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!");
}

public HttpResponseMessage Get(int id)
{
    return Request.CreateResponse(HttpStatusCode.OK, id);
}

リクエストは、本来あるべきとおりに機能します。 GET: api/controllerボディ「Empty!」でGET: api/controller/12返し、ボディ「12」で 200 を返します。

しかし、コードを次のように変更するとすぐに:

public HttpResponseMessage Get()
{
    return Request.CreateResponse(HttpStatusCode.OK, "Empty!");
}

public HttpResponseMessage Get(int itemId) //changed parameter name
{
    return Request.CreateResponse(HttpStatusCode.OK, itemId);
}

すべてがデフォルトのメソッドにヒットし、「Empty!」を返します。

これは多くの命名規則の問題の 1 つだと思いましたが、パラメーターに特定の値の名前を付ける必要があると述べたドキュメントやその他の投稿は見つかりませんでした。

セマンティックな問題のように思えるかもしれませんが、なぜパラメーターに特定の名前を付けなければならないのか、または何が間違っているのかを知りたいです。なぜこれがうまくいかないのでしょうか?

4

1 に答える 1

0

規則は RouteConfig.cs のルーティング テーブルで定義されています。パラメーター名を変更する場合は、それに応じて変更する必要があります。

 routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{itemId}",
          defaults: new { itemId = RouteParameter.Optional }
      );
于 2012-07-30T18:45:39.967 に答える