レビューするだけREST
で、開発者がそれを作成するために従う必要がある特定のプロパティがありますRESTful
。
レストとは?
ウィキペディアによると:
REST アーキテクチャ スタイルでは、アーキテクチャに適用される次の 6 つの制約が記述されていますが、個々のコンポーネントの実装は自由に設計できます。
- クライアント-サーバー:サーバーはユーザー インターフェイスやユーザーの状態に関係しないため、サーバーはよりシンプルでスケーラブルになります。
- ステートレス:クライアントとサーバーの通信は、リクエスト間でサーバーにクライアント コンテキストが保存されないため、さらに制限されます。
- キャッシュ可能:クライアントがさらなるリクエストに応じて古いデータや不適切なデータを再利用するのを防ぐために、応答は暗黙的または明示的にキャッシュ可能であるかどうかを定義する必要があります。
- 階層化されたシステム: 通常、クライアントは、エンド サーバーに直接接続されているのか、途中で仲介者に接続されているのかを判断できません。中間サーバーは、負荷分散を有効にし、共有キャッシュを提供することにより、システムのスケーラビリティを向上させる場合があります。
- コード オン デマンド (オプション):サーバーは、実行可能コードを転送することにより、クライアントの機能を一時的に拡張またはカスタマイズできます。
- 統一されたインターフェイス:以下で説明するクライアントとサーバー間の統一されたインターフェイスにより、アーキテクチャが簡素化および分離され、各部分が独立して進化できるようになります。(つまり、HTTP GET、POST、PUT、PATCH、DELETE)
動詞は何をすべきか
SO ユーザーのDaniel Vasalloは、 REST の理解: 動詞、エラー コード、および認証に関する質問で、これらのメソッドの役割をうまく説明しています。
次のようなコレクション URI を扱う場合: http://example.com/resources/
GET:コレクションのメンバーを一覧表示し、さらにナビゲーションできるようにメンバー URI を含めます。たとえば、販売中のすべての車をリストします。
PUT:「コレクション全体を別のコレクションに置き換える」と定義されている意味。
POST: ID がコレクションによって自動的に割り当てられるコレクションに新しいエントリを作成します。作成された ID は、通常、この操作によって返されるデータの一部として含まれます。
DELETE:「コレクション全体を削除する」と定義される意味。
だから、あなたの質問に答えるには:
POST クエリで使用できると言うのは正しいですか? ...
これら 2 つのクエリは同じですか? どのような場合でも 2 番目のバリアントを使用できますか? または、GET クエリと POST クエリの両方を使用できるとドキュメントに明示的に記載する必要がありますか?
単純な古い RPC API 呼び出しを作成している場合、処理サーバー側が両方の呼び出し間で違いがない限り、それらは技術的に交換可能です。ただし、呼び出しを RESTful にするためには、メソッドを介したエンドポイントの呼び出しには、メソッド (新しいリソースを作成するGET
) とは別の機能 (リソースを取得する) が必要です。POST
補足:POST
リソースの更新にも使用できるようにするかどうかについては、いくつかの議論があります... 私はそれについてコメントしていませんが、その点で問題を抱えている人がいると言っているだけです。