web-dev-qa-db-ja.com

通常のAPIの出力とa REST APIの違い

REST APIと通常のAPI(JSON応答を出力する)の違いは何ですか?

21
Shaolin

全く違いはありません。 RESTは、サーバーが応答として返すものではなく、HTTPサーバーと対話する方法を説明します。ほとんどのWebアプリは、POSTまたはGETによってサーバー側と対話します。 POSTまたはGETのクエリ文字列のフォーム送信でリクエストを実行するために必要な追加情報を含むリクエスト。したがって、サーバーから何かを削除する場合は、通常、POSTリソースを指定するデータと、リソースを削除するための指示を含むフォーム。

ただし、HTTPはGETまたはPOST以外のメソッド(動詞とも呼ばれます)を実装します。また、特に、HEAD(GETの場合と同じヘッダーを返しますが、応答本文はありません)、PUT(要求本文を取得し、そのコンテンツを任意のURLに格納します)を実装します。 PUTリクエストが行われた)、およびDELETE(指定されたURLに存在するすべてのリソースを削除)RESTインターフェイスは、これらの追加の動詞を使用して、サーバーにリクエストの意味を伝えるだけです。 。

ブラウザは通常、GETとPOST "normal"(non-XHR)リクエストのみをサポートしますが、CurlなどのツールはHTTP動詞のフルセットを発行できます。XHRベースで追加の動詞を使用することもできます。 AJAXなどの手法。

JavascriptとXHRがアプリを使用するための要件をサポートするようにしない限り、ブラウザーが使用する従来の非RESTAPIを提供する必要があります。

16
GordonM

RESTは主に、意図した方法でHTTPプロトコルを使用することを指します。 URLでGET HTTPメソッドを使用して、HTTP Acceptヘッダーに基づくさまざまな形式で情報を取得します。 POST HTTPメソッドを使用してサーバー上に新しいアイテムを作成し、PUTを使用して既存のアイテムを編集し、DELETEを使用してそれらを削除します。 APIをべき等にします。つまり、同じ情報で同じクエリを繰り返すと、同じ結果が得られます。階層的な方法などでURLを構造化します。

RESTは、URLとHTTPプロトコルを使用してAPIを構築する方法の指針にすぎません。リターン形式については何も述べていません。これはJSONでもかまいません。

これは、たとえば、HTTPメソッドやURLの違いをまったく使用せずに、指定されたポートにバイナリメッセージまたはXMLメッセージを送信するAPIとは対照的です。

8
deceze