1. ホーム
  2. rest

[解決済み] RESTful url の動詞とアクションで最も良いもの/一般的なものは何ですか?

2023-04-05 03:25:49

質問

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

例えば、アイテムの詳細を表示するため、アイテムを編集するため、更新するためなど、どのようなURLを使用しますか。

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

手伝ってくれた人に感謝します :)

どのように解決するのですか?

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

最初に述べたことはRESTfulではないことに注意してください。

/questions/show/<whatever>

その代わり、URLでオブジェクトを指定するようにしましょう。

/questions/<question>

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


GETしてください。

リソースを取得したり、リソースのリストを問い合わせたり、リソースの読み取り専用情報を問い合わせるために使用します。

質問リソースを取得するために使用します。

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

すべての質問リソースをリストアップする。

GET /questions HTTP/1.1
Host: whateverblahblah.com

POSTです。

リソースを作成するために使用します。

以下はエラーになることに注意。

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

URLがまだ作成されていない場合、名前を指定しながらPOSTで作成するのはやめた方がいいです。 これは、まだ存在しないため、リソースが見つからないというエラーになるはずです。 まず、サーバーにリソースをPUTすべきです。新しい質問を作成することによって、あなたは/questionsリソースを更新していると主張することができます。

POSTを使用してリソースを作成するために、このようなことを行う必要があります。

POST /questions HTTP/1.1
Host: whateverblahblah.com

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

DELETE。

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

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

PUTします。

リソースのURLを指定しながら、リソースを作成、または上書きするために使用します。

新規にリソースを作成する場合。

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

既存のリソースを上書きする場合。

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

...はい、同じです。PUTはしばしば「編集」メソッドと呼ばれます。リソース全体を少し変更したバージョンに置き換えることで、クライアントが次に行うときにGETするものを編集したことになるからです。


HTMLフォームでRESTを使用する。

この HTML5 仕様では、form 要素の GET と POST を定義しています。 .

method content属性は、以下のキーワードと状態を持つ列挙型属性です。

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

技術的には、HTTPの仕様はこれらのメソッドだけに制限するものではありません。技術的には自由に好きなメソッドを追加することができますが、実際にはこれは良いアイデアではありません。データを読み込むために GET を使用することを誰もが知っているので、代わりに READ を使用することにした場合、問題を混乱させるということです。とはいえ...

PATCHです。

これは正式な RFC で定義されたメソッドです。リソースに部分的な変更を加えたいときに使用するように設計されており、PUTと同じように使用されます。

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

違いは、PUTは実際に変更された内容に比べてどれだけ大きくても、リソース全体を送信しなければならないのに対し、PATCHは以下のように送信することができます。 だけ を送ることができます。