MVC4プロジェクトにAPIコントローラーを作成しました
これは、APIの機能をテストするために作成したメソッドです
private string Login(int id)
{
Employee emp = db.Employees.Find(id);
return emp.Firstname;
}
localhost:xxxx/api/controllerName/Login?id=2
でこのAPIにアクセスしようとすると、
{"$ id": "1"、 "メッセージ": "要求されたリソースはhttpメソッド 'GET'をサポートしていません。"}
何が悪いのですか?
また、これは私のAPI設定ファイルです
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
}
メソッド修飾子をプライベートからパブリックに変更し、関連する受け入れ動詞をアクションに追加します
private string Login(int id)
への変更:
[HttpGet] // Or [AcceptVerbs("GET", "POST")]
public string Login(int id)
System.webserverタグ内のweb.configでhttpメソッドを受け入れることもできます。
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
[HttpGet]
属性を追加してメソッドをパブリックにするという現在受け入れられている回答に加えて、正しい名前空間を使用していることを確認する必要があります。
System.Web.Mvc
を使用しますSystem.Web.Http
を使用します