RESTはWebサービスであると想定していましたが、これを考えるのは間違っているようです。RESTとは何ですか。
私はウィキペディアを読みましたが、それでも頭を一周できません。多くの場所でAPIをREST APIと呼ぶのはなぜですか?
RESTはWebサービスであると想定していましたが、これを考えるのは間違っているようです。RESTとは何ですか。
私はウィキペディアを読みましたが、それでも頭を一周できません。多くの場所でAPIをREST APIと呼ぶのはなぜですか?
回答:
RESTは特定のWebサービスではなく、状態情報を管理するための設計概念(アーキテクチャー)です。このことに関する重要な論文は、ロイトーマスフィールディングの論文(2000)、「Architectural Styles and the Design of Network-based Software Architectures」(カリフォルニア大学アーバイン校からオンラインで入手可能)でした。
最初にRyan Tomaykoの投稿「How How I I REST to REST to my wife」を読んでください。それは素晴らしい出発点です。その後、フィールディングの実際の論文を読んでください。それほど高度ではなく、長くもありません(6章、180ページ)。(私はあなたが学校の子供たちを短いように知っています)。
編集:RESTを説明しようとしても無意味だと思います。スケーラビリティ、可視性(ステートレス)などの多くの概念があり、読者が把握する必要があり、それらを理解するための最良の情報源は実際の論文です。POST / GETなどをはるかに超えています。
RESTは、通常Webアプリケーションで使用されるソフトウェア設計パターンです。簡単に言えば、これは多くの異なるプロジェクトで使用される一般的に使用されるアイデアであることを意味します。これは、REpresentational State Transferの略です。RESTの基本的な考え方は、サーバー側のオブジェクト(データベーステーブルの行など)を、作成または破棄できるリソースとして扱うことです。
RESTについて考える最も基本的な方法は、WebアプリケーションのURLをフォーマットする方法としてです。たとえば、リソースが「投稿」と呼ばれた場合、次のようになります。
/posts
表示するために、ユーザーがすべての投稿にアクセスする方法になります。
/posts/:id
ユーザーが個々の投稿にアクセスして表示する方法は、固有のIDに基づいて取得されます。
/posts/new
新しい投稿を作成するためのフォームを表示する方法になります。
にPOSTリクエストを送信する/users
と、実際にデータベースレベルで新しい投稿を作成できます。
PUTリクエストの送信/users/:id
は、特定の投稿の属性を更新する方法であり、これも一意のIDで識別されます。
DELETEリクエストを送信すると/users/:id
、一意のIDで識別される特定の投稿が削除されます。
私が理解しているように、RESTパターンは主にRuby on Railsフレームワークによって一般化され(Webアプリ用)、RESTfulなルートに大きな重点を置いています。私はそれについて間違っているかもしれません。
私はそれについて話すのに最も適任ではないかもしれませんが、これは私がそれを(特にRails開発のために)学んだ方法です。
誰かが「REST API」に言及する場合、一般的に彼らが意味するのは、データを取得するためにRESTful URLを使用するAPIです。
REST
ある建築様式とデザインネットワークベースのソフトウェア・アーキテクチャについては。
REST
概念はリソースと呼ばれます。リソースの表現はステートレスでなければなりません。一部のメディアタイプで表されます。メディアタイプのいくつかの例としてはXML
、JSON
、とRDF
。リソースはコンポーネントによって操作されます。コンポーネントは、標準の統一インターフェースを介してリソースを要求および操作します。HTTPの場合、このインターフェースは、標準のHTTPオプスなどで構成されGET
、PUT
、POST
、DELETE
。
REST
はHTTP
、主にHTTPのシンプルさとRESTful原則への非常に自然なマッピングのために、通常で使用されます。ただし、RESTは特定のプロトコルに関連付けられていません。
クライアントサーバー通信
クライアント/サーバーアーキテクチャでは、懸念事項が非常に明確に分離されています。RESTfulスタイルで構築されたすべてのアプリケーションも、原則としてクライアントサーバーでなければなりません。
ステートレス
サーバーへの各クライアント要求では、その状態が完全に表現されている必要があります。サーバーは、サーバーコンテキストまたはサーバーセッション状態を使用せずに、クライアント要求を完全に理解できる必要があります。したがって、すべての状態をクライアントで保持する必要があります。ステートレス表現については、後で詳しく説明します。
キャッシュ可能
キャッシュ制約を使用すると、応答データをキャッシュ可能またはキャッシュ不可としてマークできます。キャッシュ可能とマークされたデータは、同じ後続の要求への応答として再利用できます。
均一なインターフェース
すべてのコンポーネントは、単一の統一インターフェースを介して相互作用する必要があります。すべてのコンポーネントの相互作用はこのインターフェースを介して行われるため、さまざまなサービスとの相互作用は非常に簡単です。インターフェースは同じです!これは、実装の変更を個別に行うことができることも意味します。このような変更は、基本的なコンポーネントの相互作用には影響しません。統一されたインターフェースは常に変更されないためです。1つの欠点は、インターフェイスに行き詰まっていることです。インターフェースを変更することで特定のサービスに最適化を提供できる場合、RESTがこれを禁止しているため、運が悪かったです。ただし、明るい面としては、RESTはWeb用に最適化されているため、REST over HTTPの信じられないほどの人気があります。
上記の概念は、RESTの定義特性を表し、RESTアーキテクチャをWebサービスなどの他のアーキテクチャと区別します。RESTサービスはWebサービスですが、Webサービスは必ずしもRESTサービスである必要はないことに注意してください。
これは、Representational State Transferの略であり、多くのことを意味しますが、通常、APIとアプリケーションについて話す場合、Webサービスを実行する方法、またはプログラムにWeb経由で話させる方法としてRESTについて説明します。
RESTは基本的にシステム間の通信方法であり、SOAP RPCが行うように設計された機能の多くを実行しますが、SOAPは通常、接続を確立し、認証し、その接続を介して処理を行いますが、RESTはWebの動作とほぼ同じように動作します。あなたはURLを持っています、そしてあなたがそのURLをリクエストするとあなたは何かを取り戻します。これは、人々がWebを最大のRESTアプリケーションであると説明し、技術的には正しいものの、それが何であるかを説明するのに役立たないため、状況が混乱し始めるところです。
簡単に言えば、RESTを使用すると、Webブラウザーが使用するものと同様のツールを使用して、2つのアプリケーションがインターネット経由で通信できるようになります。これはSOAPよりもはるかに単純であり、RESTが行うことの多くは、「ねえ、物事はそれほど複雑である必要はない」と述べています。
読む価値があります:
http://en.wikipedia.org/wiki/Representational_State_Transfer
基本的な考え方は、サーバーへの継続的な接続を確立する代わりに、リクエストを作成し、データを取得し、それをユーザーに示しますが、すべてではないかもしれません。その後、ユーザーが追加のデータを要求する何かをすると、または、一部をサーバーに渡すために、クライアントは新しい状態への変更を開始します。