私はサイト上にWeb APIを持っています。 api呼び出しにパラメータがない場合、私はそれを打つことができますが、パラメータがあれば打つことはできません。以下は、私が話していることの例です。MVC APIの転記パラメータ発行
[HttpGet]
public string GetFacilityName2()
{
return "Good";
}
[HttpGet]
public string GetFacilityName(string projectNumber)
{
return "Never Get Here";
}
現時点では、設定ルートがデフォルトです。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
私は次の2つのURLを使用しています。作品1のURLは私がこれをしたAPIの第三の方法を持っていたhttp://localhost/api/Controller/GetFacilityName?projectNumber=44
UPDATE で動作しないもののためにhttp://localhost/api/Controller/GetFacilityName2
URLです。
[HttpGet]
public Address GetWorkplaceAddress(string projectNumber)
{
return new Address();
}
これをAPIから削除すると、もう一方のメソッドが機能し始めました。アドレスはそのように定義されます。
public class Address
{
public int Id { get; set; }
public string AddressValue { get; set; }
public string City { get; set; }
public int? State { get; set; }
public string Zip { get; set; }
public int? Country { get; set; }
}
コントローラでアクションをパラメータで過負荷にすることはできません。 RouteAttributeを使用して名前で実行するアクションを指定することも、Http動詞(Get、Post、Putなど)で指定することもできます。 – Igor
コントローラーの各アクションには、それぞれ異なる名前が付けられています。上記の違いは、最後に「2」という文字になります。 – Nate
あなたのルートテンプレートが名前を完全に無視する(すなわち、{アクション}はありません)、RouteAttributesがなく、使用されているHTTP動詞のキーを押さないものはありません。 – Igor