REST API と通常の API (JSON 応答を出力する) の違いは何ですか?
2 に答える
まったく違いはありません。REST は、サーバーが何を返すかではなく、HTTP サーバーと対話する方法を記述します。ほとんどの Web アプリは、POST のフォーム送信または GET のクエリ文字列で要求を満たすために必要な追加情報を使用して、POST または GET 要求によってサーバー側と対話します。そのため、サーバーから何かを削除したい場合は、通常、リソースを指定するデータと削除の指示を含むフォームを使用して POST を実行します。
ただし、HTTP は GET または POST 以外のメソッド (動詞とも呼ばれます) を実装します。また、とりわけ、HEAD (GET に対して行ったのと同じヘッダーを返しますが、応答本文はありません)、PUT (要求本文を取得し、PUT 要求が行われた URL にそのコンテンツを格納します)、およびDELETE (指定された URL に存在するすべてのリソースを削除します)。REST インターフェイスは、これらの追加の動詞を使用して、要求の意味をサーバーに伝えるだけです。
通常、ブラウザーは「通常の」(非 XHR) リクエストに対して GET と POST のみをサポートしますが、Curl などのツールは HTTP 動詞の完全なセットを発行できます。AJAX などの XHR ベースの手法で追加の動詞を使用することもできます。
アプリを使用するための要件として JavaScript と XHR のサポートを作成しない限り、ブラウザーが使用する従来の非 REST API を引き続き提供する必要があります。
REST は、ほとんどの場合、意図したとおりに HTTP プロトコルを使用することを指します。URL で HTTP メソッドを使用して、 HTTPヘッダーGET
に基づくさまざまな形式で情報を取得します。Accept
HTTP メソッドを使用POST
して、サーバー上に新しいアイテムを作成し、PUT
既存のアイテムを編集し、DELETE
それらを削除します。API をべき等にします。つまり、同じクエリを同じ情報で繰り返しても、同じ結果が得られるはずです。URL を階層的に構造化するなど。
REST は、URL と HTTP プロトコルを使用して API を構築する方法の指針にすぎません。戻り値の形式については何も述べていませんが、JSON である可能性もあります。
これは、たとえば、HTTP メソッドや URL の違いをまったく使用せずに、指定されたポートにバイナリ メッセージまたは XML メッセージを送信する API とは対照的です。