2013-04-09 17 views
5

Webサービスを作成していますが、パス名に関するいくつかの質問があります。 RESTful Webサービスのリソースに対するアクションをどのように指定しますか?RESTfulパスの名前付け

例:クイズリソース。あなたは通常のCRUDアクションを持っており、クイズでもやりたいことがあります。新しいクイズを生成するなど。それが行動です。 /quiz/top5または/quiz?type=top5などのパスを使用していますか?

RESTfulサービスを作成するときに、リソースにアクションを実行するパスをどのように記述するのか分かりません。

+0

id '123'には'/quiz/generate/123'を使用します –

+0

'/ quiz/{id} 'を使用します –

答えて

1

を永続化します。

  • 実用的なRESTfulな設計でナンバーワンの原則は次のとおりです:シンプルシンプル 物事を保つ彼らのアドバイスに続いて

  • 基本URLをシンプルで直感的にしてください。あなたが欲しいのトップリストについて
+------------+-------------------+--------------+----------------------------------------+------------------+ 
| Resource | POST create  | GET read  | PUT update        | DELETE delete | 
| /quizzes | Create a new quiz | List quizs | Bulk update quizs      | Delete all quizs | 
| /quizes/12 | Error    | Show Quiz 12 | If exists update Quiz 12, if not Error | Delete Quiz 12 | 
+------------+-------------------+--------------+-----------------------------------------+------------------+ 

、おそらく彼らは、「改ページとパーシャルレスポンス」セクションで概説したものと同様のソリューションは、あなたのニーズに合うことがあります。

quizzes/top?limit=5

これで、最初にリソースquizs/topをデフォルト値(5または10項目)で作成し、後で項目のページ付け/変更を行うことができます。

+0

あなたがその電子ブックのガイドラインに従っていて、2つのベースURLを持っていたなら。サーバーによってランダムに生成される新しいクイズをどうやって取得しますか?/quizesはすべてのクイズ(コレクション)をリストするために予約されていますか? – LuckyLuke

+0

私はクライアント側で作成していません、私はちょうどサーバーから生成されたものをしたいです – LuckyLuke

+0

私はクイズ/ランダム(BTW、私はクイズ複数 - クイズを書くために自分の投稿を編集するつもりです - :-) – jalopaba

0

本当にあなた次第です。RESTfulパターンでは命名規則が決まりません。

What are the best/common RESTful url verbs and actions?これはお役に立ちますか?

経路を分かりやすくする:クイズ/ショー/ {id}、クイズ/トップ/ {数字}など...

編集:Rails Conventionから取得したルートアクションネーミングに関するコメントに回答を追加します。 http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

+0

リソース上に「プロセス」を引き起こすパスをどのように記述しますか? CRUDパスだけでなく、アクションのような意味ですか? – LuckyLuke

+0

edit abouve ... – diagonalbatman

+0

を参照してください。他の回答では、URLを使用してオブジェクトを指定し、アクションは指定しないでください。うーん... "トップ"を使用してあなたの例はオブジェクトを指定する? – LuckyLuke

0

私はこの回答を読むことをお勧めしますhttps://stackoverflow.com/a/11170376/300886似たような質問に。

一般的に、GET経由で利用できるAPIの部分とPOST経由のAPIの部分を考慮する必要があります。 GETを介して利用できるリソースは、通常、名詞を使って記述する必要があります。おそらく動詞を使って記述されたPOST(またはDELETE、多分)を使って、リソースの名詞名の後にアクションが実行されます。

0

ディレクトリの構造のように、thisで説明されているようにREST URLを使用するとよいでしょう。それがあるべき

/{type}/{operation}/{param1}/{param2}...

のようなURLがより直感的でmaitainable見えます(彼らはあまりにも多くある場合、paramは古典?=として渡すことができます)

ので、あなたの場合には、それは/quiz/top/5場合や明日することができトップ100は、その後、同じことが/quiz/top/100

0

URLとして再利用することができあなたのオブジェクトを識別します。 HTTPメソッドは、サーバーがオブジェクトに対して実行するアクション(または操作)を指定します。例えば

/quiz/top5 
  • HTTP GET:クライアント要求がクイズTOP5を見て、これは新しいものを作成する意味ですか?またはこれは既存のものを表示しているのでしょうか?それはあなた次第です(GETの規約は、サーバー上の状態を変更せずにオブジェクトを要求することです)。
  • HTTP POSTWeb API Design: Crafting Interfaces that Developers Loveを:クライアント要求は、私がapigeeからこの電子書籍をお勧めします変更
+0

トップ5部分は、上位5個のオブジェクトのリストを動的に処理することを意味します。それはオブジェクトの識別の傘に合っていますか?行動ではない? – LuckyLuke

+0

それはまさに正しいことです。 – Ulises

関連する問題