RESTシステムとRESTfulなシステムの違いは何ですか?
私が最もよく読んだいくつかのことから、いわゆるRESTサービスは実際にはRESTfulなサービスです。では、2つの違いは何ですか。
RESTシステムとRESTfulなシステムの違いは何ですか?
私が最もよく読んだいくつかのことから、いわゆるRESTサービスは実際にはRESTfulなサービスです。では、2つの違いは何ですか。
回答:
表現状態転送(REST)は、ソフトウェアアーキテクチャのスタイルです。Roy Fieldingの論文で説明されているように、RESTは基本的にWebの既存のテクノロジーとプロトコルを活用する「アーキテクチャスタイル」です。
RESTfulは通常、このようなアーキテクチャーを実装するWebサービスを指すために使用されます。
architect
なにかの?URLの?同様にhttps://translation.googleapis.com/language/translate/v2
、このRESTスタイルはありますか?
これら2つを区別または比較するには、RESTとは何かを知っておく必要があります。
REST(REプレゼンテーションSテートT ransfer)は、基本的に、いくつかの原則を持つ開発の建築様式です。
ステートレスである必要があります
URIのみを使用してサーバーからすべてのリソースにアクセスする必要があります
組み込みの暗号化はありません
セッションがありません
1つだけのプロトコルを使用します-HTTP
CRUD操作を実行するため、それは、次のようなHTTP動詞を使用する必要がありget
、post
、put
及びdelete
JSONまたはXML、atom、ODataなどの形式でのみ結果を返す必要があります(軽量データ)
REST based services
すべてではなく、上記の原則のいくつかに従ってください
RESTFUL services
上記のすべての原則に従うことを意味します。
これは次の概念に似ています。
Object-based languages
すべてのOOPの概念、例をサポートしています:C ++、C#
Object oriented languages
OOP機能の一部をサポートしています。例:JavaScript、VB
例:
ASPドットNET MVC 4はREST-Based
Microsoft WEB APIですRESTFul
。
MVCは上記のREST原則の一部のみをサポートしていますが、WEB APIは上記のREST原則をすべてサポートしています。
MVCはREST APIから次のもののみをサポートします
URIを使用してリソースにアクセスできます
サーバーからリソースにアクセスするためのHTTP動詞をサポートしています
結果をJSON、XML、つまりHTTPResponseの形式で返すことができます。
ただし、MVCでは同時に
セッションを利用できます
ステートフルにできる
基本的にRESTの原則に違反するコントローラーアクションメソッドからビデオまたは画像を返すことができます
これが、MVCがREST-Based
WEB APIをサポートし、上記の原則をすべてサポートする理由ですRESTFul
。
「REST」は建築パラダイムです。「RESTful」はそのパラダイムの使用法を説明しています。
architect
なにかの?URLの?同様にhttps://translation.googleapis.com/language/translate/v2
、このRESTスタイルはありますか?
RESTは、代表的な状態転送を表します。つまり、国家自体が移転されるのではなく、単にそれが表現されるだけです。最も一般的な例は、純粋なHTMLサーバーベースのアプリです(JavaScriptなし)。ブラウザーはアプリケーション自体については何も知りませんが、リンクとリソースを介して、サーバーはアプリケーションの状態をブラウザーに転送できます。通常のWindowsアプリケーションでボタンが通常は状態変数(ページを開くなど)を変更する場合、ブラウザーにはそのような状態の変化を表すリンクがあります。
アイデアは、ハイパーメディアを使用することです。そして、おそらく新しいハイパーメディアタイプを作成します。潜在的には、javascript / AJAXを使用してブラウザーを拡張し、新しいカスタムハイパーメディアタイプを作成できます。そして、真のRESTアプリケーションができます。
これは、RESTが表すものの私の短いバージョンです。問題は、実装が難しいことです。私は個人的にRESTfulと言います。RESTの原則を参照したいのですが、RESTの概念全体を実際に実装しているわけではありません。SOAPを使用するかどうかにかかわらず、私たちは実際にSOAPfulとは言いません。ほとんどの人は、作成者のRoy Fieldingが想定した方法でRESTを実行していないと思います。実際には、RESTfulまたはRESTlikeアーキテクチャーを実装しています。彼の論文を見ることができ、RESTの頭字語は見つかりますが、RESTfulという単語は見つかりません。
RESTは、分散ソフトウェアのソフトウェアアーキテクチャのスタイルです。
REST制約に準拠することを「RESTful」と呼びます。
現在、SOAPの代替としてWebサービスを構築するために使用されています。
ここにチェックするリンクがあります
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/
答えてくれてありがとう。RESTful Webサービスには次の4つの基本的な特徴があることを示唆しているAlex Rodriguezによるこの記事を読んでください。
表現状態転送(REST)は、World Wide Webなどの分散ハイパーメディアシステム用のソフトウェアアーキテクチャのスタイルです。Representational State Transferという用語は、Roy Fielding 1 [2]によって博士論文で2000年に導入および定義されました。フィールディングは、ハイパーテキスト転送プロトコル(HTTP)仕様バージョン1.0および1.1の主要な作成者の1人です。REST制約に準拠することを「RESTful」と呼びます。出典:ウィキペディア
Webサービスは、本質的には、人間ではなくコンピュータープログラムによってコンテンツが消費されるWebサイトです。RESTは、WebサービスがHTTPやその他のWeb標準を最大限に活用して、プログラムが人々がWebからすでに得られるすべての優れた機能を利用できるようにすることを規定する一連のアーキテクチャ原則です。RESTは多くの場合、SOAP Webサービスやその他の「リモートプロシージャコール」指向のWebサービスと対照的です。
Parleys.comでのRESTに関するStefan Tilkovのプレゼンテーションは、特にこれが非常に優れています。
本の場合、RichardsonとRubyのRestful Web Servicesに勝るものはありません。
RESTベースのサービスを「RESTfulサービス」と呼びます。
出典私はそれを投稿することを信頼しています:Dr.Dobbs Archive
Richardson成熟度モデルでは、4つのレベルのAPIが定義されています。これらは次のように定義されます。
レベル0:すべてのAPI(SOAPまたはRPCがこのカテゴリに該当)に対して単一のエンドポイントを持つシステム。レベル0のAPIは「コマンド」に似ていることもあります。
レベル1:ResourceUri記述システム。これは、エンティティーベースの複数のURIを定義するシステムです(レベル0システムのように単一のエンドポイントを持つのではなく)。これらのURIは、さまざまなhttpアクション(POST、GET、PUTなど)を使用して、そのリソースに対してさまざまなアクションを実装できます。
レベル2:レベル1とも呼ばれ、標準のHTTPメソッド/動詞とマルチステータスコード応答の準拠した使用
レベル3:別名レベル2とHATEOAS(応答に含まれるハイパーメディアで、追加の呼び出しを記述できます)
レベル1、レベル2、およびレベル3はRESTシステムと見なすことができますが、より厳しいレベル(別名レベル2およびレベル3)のみがRESTfulと見なされます。
したがって、本質的にすべてのRESTful APIはREST APIですが、すべてのREST APIがRESTfulであるとは限りません
「RESTサービス」と「RESTfulサービス」は同じものです。
RESTfulシステムとは、RESTfulネットワークアプリケーションのアイデアを生み出した元のドキュメントで定義されているREST規則に準拠するシステムです。
RESTfulnessにはさまざまなレベルがあることに注意してください。全体として、RESTはスタイルであり、標準ではないため、ニーズに基づいて解釈する余地があります。1つの例は、階層型リソースURL(例/things/ID/relatedthings
)とフラットURL(例:/things/ID
および/relatedthings?thing=ID
)です。