88

私は、最善かつ最も一般的な RESTful url アクションに関する情報を見つけようとしています。

たとえば、アイテムの詳細の表示、アイテムの編集、更​​新などに使用する URL は何ですか。

/question/show/<whatever>
/question/edit/<whatever>
/question/update/<whatever> (this is the post back url)
/question/list   (lists the questions)

うーん。助けてくれた人に感謝します:)

4

5 に答える 5

177

URL を使用して、アクションではなくオブジェクトを指定します。

最初に言及したのは RESTful ではないことに注意してください。

/questions/show/<whatever>

代わりに、URL を使用してオブジェクトを指定する必要があります。

/questions/<question>

次に、そのリソースに対して以下の操作のいずれかを実行します。


得る:

リソースの取得、リソースのリストのクエリ、およびリソースの読み取り専用情報のクエリに使用されます。

質問リソースを取得するには:

GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com

すべての質問リソースを一覧表示するには:

GET /questions HTTP/1.1
Host: whateverblahblah.com

役職:

リソースの作成に使用されます。

以下はエラーであることに注意してください。

POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com

URL がまだ作成されていない場合は、名前を指定するときに POST を使用して作成しないでください。まだ存在しないため、リソースが見つからないというエラーが発生するはずです。最初にリソースをサーバーに PUT する必要があります。新しい質問を作成すると、/questions リソースも更新され、質問のリストにもう 1 つの質問が返されるようになると主張できます。

POST を使用してリソースを作成するには、次のようにする必要があります。

POST /questions HTTP/1.1
Host: whateverblahblah.com

この場合、リソース名が指定されていないことに注意してください。新しいオブジェクトの URL パスが返されます。

消去:

リソースを削除するために使用されます。

DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com

置く:

リソースの URL を指定する際に、リソースを作成または上書きするために使用されます。

新しいリソースの場合:

PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com

既存のリソースを上書きするには:

PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com

...はい、同じです。PUT は、リソース全体をわずかに変更されたバージョンに置き換えることによって、クライアントが次に取得するときに何を取得するかを編集したため、「編集」メソッドとして説明されることがよくあります。


HTML フォームでの REST の使用:

HTML5 仕様では、フォーム要素のGET と POST が定義されています

メソッド コンテンツ属性は、次のキーワードと状態を持つ列挙型属性です。

  • HTTP GET メソッドを示すキーワード GET。状態 GET にマッピングされます。
  • HTTP POST メソッドを示すキーワード POST。状態 POST にマッピングされます。

技術的には、HTTP 仕様はこれらのメソッドだけに限定するものではありません。技術的には必要なメソッドを自由に追加できますが、実際にはこれは良い考えではありません。GET を使用してデータを読み取ることは誰もが知っているので、代わりに READ を使用すると混乱するでしょう。それは言った...

パッチ:

これは、正式な RFC で定義されたメソッドです。リソースの部分的な変更のみを送信する場合に使用するように設計されており、PUT のように使用されます。

PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com

違いは、PUT はリソース全体を送信する必要があり、実際に変更されたものと比較してどれだけ大きくても、PATCH は変更のみを送信できることです。

于 2008-11-02T01:20:10.343 に答える
11

が有効な質問であると仮定する/questions/10と、メソッドはそれと対話するために使用されます。

それに追加するPOST

作成または置換する PUT

GET して表示/クエリする

そしてDELETEしてよく..削除します。

URLは変わりません。

于 2008-11-02T01:14:14.647 に答える
3

あなたの例は非「RESTful」と見なされる可能性があるため、「RESTful」URLと言うとき、MVCの標準コントローラーとは何かを意味していると推測します(この記事を参照)。

あなたが興味を持っていると思われる URL スタイルを Rails が本当に普及させたので、Ruby on RailsのScaffoldingGeneratorによって生成されるデフォルトのコントローラー アクションを以下に示します。これらは、Rails アプリケーションを使用している人なら誰でも知っているはずです。

スキャフォールディングされたアクションとビューは、index、list、show、new、create、edit、update、destroy です。

通常、これを次のように構成します。

http://application.com/controller/<action>/<id>
于 2008-11-02T01:33:08.743 に答える
1

以下は、REST 原則を使用した現在の URL のマッピングです。

/question/show/<whatever>

質問をリソースとして特定する場合、一意の URL が必要です。GET を使用して表示 (取得) するのが一般的な方法です。あれは。。。になる:

GET /question/<whatever>

/question/edit/<whatever>

ここで、ユーザーが同じリソースの別のビューを使用して、リソースを編集できるようにする必要があります (おそらくフォーム コントロールを使用)。

ここで 2 つのオプションがあります。アプリケーションはアプリケーション (Web サイトではありません) であり、JavaScript を使用してクライアント側でリソースを編集可能なリソースに変換する方がよい場合があります。

これが Web サイトの場合、同じ URL に追加情報を追加して別のビューを指定できます。一般的な方法は次のようです。

GET /question/<whatever>;edit

/question/update/<whatever> (this is the post back url)

これは質問を変更するためのものであるため、PUT を使用するのが正しい方法です。

PUT /question/<whatever>

/question/list   (lists the questions)

質問のリストは、実際には質問の親リソースであるため、当然次のようになります。

GET /question

今、あなたはもう少し必要かもしれません:

POST /question (create a new question and returns its URL)
DELETE /question/<whatever> (deletes a question if this is relevant)

多田:)

于 2008-11-04T23:31:02.310 に答える
-1

あなたの4つの例は次のとおりです。

GET /questions/123
POST (or PUT) /questions/123 q=What+is+the+meaning+of+life
POST (or PUT) /questions/123 q=What+is+the+meaning+of+life
GET /questions

質問を追加するには:

POST /questions q=What+is+the+meaning+of+life

サーバーは次のように応答します。

200 OK (or 201 Created)
Location: /questions/456
于 2009-07-04T07:32:46.660 に答える