2012-03-13 19 views
0

私はAsp.net Web APIを使用してAPIを作成しています。私は2つのメソッドを持つコントローラBookController持っている:私はlocalhost/book/3呼び出すと、指定されたIDと、特定のユーザー 同じ宣言を持つ2つのメソッドのASP.NET Web APIルーティング

のすべての書籍を返す

  • GetBook(int userId)で本を返し

    • GetBook(int id)をする方法で曖昧さがありますどのように2つの方法を区別することができますか?

  • 答えて

    0

    は異なるHTTP動詞

    [HttpGet] 
    public int GetUsers(int i) { return 0; } 
    
    [HttpPost] 
    public int GetBooks(int i) { return 1; } 
    

    を使用してハックの方法があります。しかし、私は使用は、コントローラまたはPARAMを追加すべきだと思います。

    +0

    これは、箱から出して使用するWebAPIのルートでは動作しません。 http getが入ったときに "Get ..."で始まるメソッドを探す名前マッチングセマンティックを使用します。したがって、ポストでは "Post ..."という名前のメソッドを検索し、 'GetBooks'を参照しませんSee例えば:http://stackoverflow.com/a/10471854/215068 – EBarr

    7

    ハッキングを忘れた、これは常識です。ユーザーと開発者の間違いのために、これらの異なる操作をはっきりと区別するために、ルートとメソッド名を変更するだけです。 1つの解決策は、Map/user/3 /書籍と書籍/ 3をそれぞれGetBooksByUserとGetBooksにすることです。コードとURIをより読みやすくします。

    0

    書籍とユーザーが2つあります。 書籍の場合:api/books/3は書籍#3を、ユーザーの場合はapi/users/3がユーザー#3を表示します。

    ASP.NET Web APIの基本チュートリアルをチェックしましたか?彼らは偉大だ、私はそれらに続いたのだが、すべてが非常に簡単になります:

    http://www.asp.net/web-api/overview

    関連する問題