私はREST APIを作成しています。たとえば、著者と投稿があります。REST Api関連およびネストされたリソースのエンドポイントデザイン
だから私は、と著者によって公開記事を取得することができます:
/authors/123/posts
それとも
/posts?authorId=123
が、私は柔軟なAPIを構築することは、より良い選択肢かもしれないと思います。著者の記事を取得するには、私はどうなる:だからこのケースでは、私が作成した日付でソートして公開され、また、各ポストのタグやカテゴリを取得しているauthorId = 123からのすべての投稿を取得しています
/posts?authorId=123&published=true&sort=created&expand=tags,category
。
基本的には、各データベーステーブルにマップされる種類のクエリ言語を作成します。私は特定のエンドポイントを作成する一般的なクエリのためのその後
:
/posts/recent
が...独立作者の
を最近の投稿を返すだろう、私は多くのレベルを使用しているとき/authors/123/posts
が複雑になるかもしれないと思います。
あなたはどう思いますか?
UPDATE
いくつかの答えの後、私の考えは以下の通りです:そこ場合
GET /posts?authorId=123&published=true
POST /posts
PUT /posts
DELETE /posts/123
:投稿と著者は私が(記事のための一例)を持っているでしょう2つのリソースです
投稿者と著者の間に階層的な依存関係があり、投稿者の投稿が必要な場合があります。
GET /authors/123/posts&published=true
ポストは、リソース著者の外に存在しません場合は、2つの以前のオプションはに置き換えられます:あなたはどう思います
GET /authors/123/posts?published=true
POST /authors/123/posts
PUT /authors/123/posts
DELETE /authors/123/posts/123
?
あなたの をルーティング属性を使用して、Web APIを柔軟にすることができますがhttp://www.asp.net/web-この を参照してください。 api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2およびhttp://www.asp.net/web-api/overview/web-api-routing-and- actions/create-a-rest-api-with-attribute-routing –
はい、AttributeRoutingを使用しています。問題は、どちらのアプローチが優れているかです。または2つの組み合わせかもしれませんか? –
は属性のルーティングに向いています。これは、単一のコントローラメソッドでより多くのルートを定義できるようにするためです。 –