2017-08-19 5 views
2

Web Api 2(Visual StudioのMVCプロジェクト)を理解しようとしています。追加のパラメータを追加するとASP.NET Web APIに接続できません

方法は、ポストマンを使用し

[HttpPost] 
    public string Post(int id, string e, bool o) 
    ///code removed 

あり、IはPostとパスhttp://localhost:62093/api/Demo/5を使用して照会することができます。これは動作し、期待値を返します。

ここでパラメータを追加したいと思います。これは間違っています。 「要求されたリソースがありません:私は

「メッセージ」を参照してください。私は今、私は(再び)を使用して、これを照会しようとすると

[HttpPost] 
    public string Post(int id, string e, bool o) 

Postとパスhttp://localhost:62093/api/Demo/5を私の方法を更新しました

httpメソッド 'POST'をサポートしていません。 "

私はその後、私はPostを使用して、新しいパスhttp://localhost:62093/api/Demo/5/a/falseときに、私は、リソースが

これは持っているを見つけることができない

のHTMLファイルの応答を参照して、URLを変更してみてください私が理解したことは、URLが「間違っている」ということです。

これはルートIの問題であると考えています更新された地雷を

 config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}/{s}/{o}", 
      defaults: new { id = RouteParameter.Optional, s = RouteParameter.Optional, o = RouteParameter.Optional } 
     ); 

に更新しましたが、同じ問題が引き続き発生します。私は何が間違っているのか分かりません。

答えて

1

これはルーティングの問題です。ルートを正しく設定していません。

まず、私はようやくにAttribute Routing in ASP.NET Web API 2上に読んで示唆していることを設定して今私は

public class DemoController : ApiController { 
    [HttpPost] 
    [Route("api/Demo/{id:int}/{e}/{o:bool}")] //Matches POST api/Demo/5/a/false 
    public IHttpActionResult Post(int id, string e, bool o) { 
     return Ok(); 
    } 
} 

をルーティング属性を使用することをお勧めし、私たちはWebApiConfig.csファイル

public static class WebApiConfig { 
    public static void Register(HttpConfiguration config) { 
     // Attribute routing. 
     config.MapHttpAttributeRoutes(); 

     // Convention-based routing. 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

を更新してみましょうあなたのAPIに適切にルーティングする方法についてのより良い理解を得るトローラー

+0

特に、属性ルーティングへのリンクありがとうございます。 – MyDaftQuestions

関連する問題