2017-08-02 9 views
0

私はモバイルアプリケーションと対話するためのノンコアwebapiプロジェクトを作成しました。たとえば、Dataというコントローラを作成した場合、以下のようなSearchというメソッドがあります。プロジェクトはjsonデータを送受信するように構成されています。は、asp.net core webapiのポストメソッドに投稿することができます

[HttpPost] 
public Searchresult search(SearchQuery s) 
{ 
    // code to search 
    return sr; //object of type Searchresult 
} 

私は同様に、私は、コントローラ内の他の機能を作成し、ルート「/ API/[制御]を使用して呼び出すことができ、次のURL http://localhost/api/Data/search

を使用して郵便配達を使用して、この方法にPOSTリクエストを送信することができます/[アクション]'。

私はasp.netcore web apiプロジェクトで同じことをすることができませんでした。ルーティングはコントローラーレベル、つまり '/ api/[コントローラー]'でした。投稿するたびにpostメソッドだけがヒットしました。次のように実装されています。私は「http://localhost/api/Data」に投稿するときに、私は「http://localhost/api/Data/test

[HttpPost] 
    public string test([FromBody] testclass t) 
    { 
     return "{\"a\":\""+t.a+"\",\"b\":\""+t.b+"\"}"; 
    } 
+0

これはCore Apiの「通常の」動作ではないため、ルートに問題がある可能性があります。また、提供されているコードでカバーされていない問題もあります。問題があると思われる特定のシナリオに固執し、実際のコードを投稿することは、ダミーのサンプルコードを作成することにより、実際のコードで直面している問題を解消するか、そうでなければあいまいにすることがあります。 –

+0

実際これは私の実際のコードです。実際のプロジェクトの実装を開始できるように、コアWeb APIをテストするためのダミープロジェクトを作成しました。 –

答えて

0

に投稿する場合は、以下のコードが実行されることはありません

[HttpPost] 
public string Post([FromBody] testclass t) 
{ 
    return "{\"a\":\"" + t.a + "\",\"b\":\"" + t.b + "\"}"; 
} 

コントローラが違いを理解していないので、それが最も可能性があります実行されますあなたのルート。あなたは明示的にこのようなルートを定義する必要があります:

[HttpPost("post")] 
public string Post([FromBody] testclass t) 
{ 
    return "{\"a\":\"" + t.a + "\",\"b\":\"" + t.b + "\"}"; 
} 

[HttpPost("test")] 
public string Test([FromBody] testclass t) 
{ 
    return "{\"a\":\""+t.a+"\",\"b\":\""+t.b+"\"}"; 
} 

そして、それらに投稿してください。

関連する問題