web-dev-qa-db-ja.com

RESTとRESTfulの違いは何ですか

RESTシステムとRESTfulなシステムの違いは何ですか?

私が ほとんど読んだ いくつかのことからRESTサービスは実際にはRESTfulなサービスです。だから、両者の違いは何ですか。

472
AwkwardCoder

Representational State Transfer(REST) はソフトウェアアーキテクチャの一種です。 Roy Fieldingによる論文で説明されているように、RESTは基本的にWebの既存のテクノロジとプロトコルを活用する「アーキテクチャスタイル」です。

RESTfulは通常、そのようなアーキテクチャーを実装するWebサービスを指すのに使用されます。

437
Justin Ethier

「REST」はアーキテクチャ上のパラダイムです。 「RESTful」はそのパラダイムの使い方を説明しています。

111
SingleShot

RESTベースのサービス/アーキテクチャVC RESTFULサービス/アーキテクチャ

これら2を区別または比較するには、RESTとは何かを知っておく必要があります。

REST(REプレゼンテーションS日付Transfer)は基本的にいくつかの原則を持つ開発の建築スタイルです...

  • それは無国籍であるべきです

  • URIのみを使用してサーバーからすべてのリソースにアクセスする必要があります。

  • 作り付けの暗号化はありません

  • セッションはありません

  • HTTPというプロトコルを1つだけ使用します。

  • CRUD操作を実行するには、get、post、put、deleteなどのHTTP動詞を使用する必要があります。

  • 結果はJSONまたはXML、アトム、ODataなどの形式(軽量データ)でのみ返されるべきです。

REST based servicesは上記の原則のいくつかに従い、すべてではありません

RESTFUL servicesは上記のすべての原則に従うことを意味します。

これは、次の概念に似ています。

Object-based languagesは、すべてのOOPの概念をサポートします。:C++、C#

Object oriented languagesはいくつかのOOP機能をサポートします、:JavaScript、VB


ASP Dot NET MVC 4はREST-Based、Microsoft WEB APIはRESTFulです。

MVCは上記のREST原則の一部のみをサポートしていますが、Web APIは上記のREST原則をすべてサポートしています。

MVCはREST AP​​Iの次のもののみをサポートします。

  • URIを使ってリソースにアクセスできます

  • サーバーからリソースにアクセスするためのHTTP動詞をサポートします。

  • 結果をJSON、XML、つまりHTTPResponseの形式で返すことができます。

しかし、MVCでは同時に

  • セッションを利用できます

  • ステートフルにすることができます

  • RESTの原則に違反するコントローラのアクションメソッドからビデオや画像を返すことができます。

MVCがREST-Basedであるのに対し、Web APIは上記のすべての原則をサポートし、RESTFulです。

110
Pramod Nikumbh

Jasonがコメントで述べたように、RESTfulはREST制約を尊重する何かを記述する形容詞として使われているだけです。

38
Darrel Miller

RESTは表現状態転送を表します。つまり、国家そのものは移転されているのではなく、単なる表現にすぎません。最も一般的な例は、純粋なHTMLサーバーベースのアプリケーションです(JavaScriptは使用しません)。ブラウザはアプリケーション自体については何も知りませんが、リンクとリソースを通して、サーバはアプリケーションの状態をブラウザに転送できます。通常のWindowsアプリケーションでボタンが通常状態変数を変更する場合(たとえばページを開く)、ブラウザにはそのような状態変更を表すリンクがあります。

アイデアはハイパーメディアを使用することです。そしておそらく新しいハイパーメディアタイプを作成することです。場合によっては、javascript/AJAXを使ってブラウザを拡張し、新しいカスタムハイパーメディアタイプを作成することができます。そして真のRESTアプリケーションがあるでしょう。

これはRESTが何を表しているかの私の短いバージョンです。問題はそれが実装するのが難しいということです。私がRESTの原則を参照したいとき、私は個人的にRESTfulと言いますが、私はRESTの概念全体を実際には実装していないことを知っています。あなたがSOAPを使うか使わないかのどちらかであるので、私たちは本当にSOAPfulを言いません。私はほとんどの人がRESTを作成者であるRoy Fieldingが想像していたやり方では行わないと思います。実際にはRESTfulまたはREST風のアーキテクチャーを実装しています。彼の 論文 を見ると、REST頭字語は見つかりますが、Word RESTfulは見つかりません。

27

RESTは、分散ソフトウェアのためのソフトウェアアーキテクチャのスタイルです。

REST制約に準拠することは「RESTful」と呼ばれます。

SOAPの代替としてWebサービスを構築するために今日非常に使用されています。

ここにあなたがチェックするリンクがあります。

http://ja.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/

23
Claudio Redi

答えてくれてありがとう。 Alex Rodriguezによる この記事 は、RESTful Webサービスには4つの基本的な特徴があることを示唆しています。

  1. HTTPメソッドを明示的に使用してください。
  2. ステートレスになります。
  3. ディレクトリ構造のようなURIを公開します。
  4. XML、JavaScript Object Notation(JSON)、またはその両方を転送します。
11
Kumait

Representational State Transfer(REST)は、World Wide Webなどの分散ハイパーメディアシステム用のソフトウェアアーキテクチャの一種です。 Representational State Transferという用語は、2000年にRoy Fielding 1 [2]によって博士論文で導入および定義されました。 Fieldingは、Hypertext Transfer Protocol(HTTP)仕様のバージョン1.0および1.1の主要な作者の一人です。 REST制約に準拠することは「RESTful」と呼ばれます。 出典:ウィキペディア

10
Andersson Melo

Webサービスは、本質的にその内容が人ではなくコンピュータプログラムによって消費されるWebサイトです。 RESTは、WebサービスがHTTPや他のWeb標準を最大限に活用すべきであることを規定する一連のアーキテクチャ上の原則です。 RESTはSOAP Webサービスや他の「リモートプロシージャコール」指向のWebサービスとは対照的です。

Parleys.comのRESTでのStefan Tilkovのプレゼンテーションは非常に良いものです 特にこれ

本のために、あなたはRichardsonとRubyの Restful Webサービス よりも良くなることはできません。

7
Jim Ferrans

RESTに基づくサービスは「RESTfulサービス」と呼ばれます。

私がそれを投稿することに頼っている情報源: Dr.Dobbsアーカイブ

4
DaddyM

Richardson Maturity Modelには4つのレベルのAPIが定義されています。これらは次のように定義されています。

  • レベル0:すべてのAPIに対して単一のエンドポイントを持つシステム(SOAPまたはRPCはこのカテゴリーに入ります)。レベル0のAPIは「コマンド」にも似ています。

  • レベル1:ResourceUri記述システムこれは、(レベル0システムのように単一のエンドポイントを持つのではなく)複数のエンティティベースのURIを定義するシステムです。これらのURIは、そのリソースに対してさまざまなアクションを実装するためにさまざまなhttpアクション(POST、GET、PUTなど)を使用できます。

  • レベル2:レベル1とも呼ばれる標準HTTPメソッド/動詞およびマルチステータスコード応答の使用

  • レベル3:別名レベル2とHATEOAS(あなたが作ることができる追加の呼び出しについて説明する応答にハイパーメディアが含まれています)

レベル1、2、および3はRESTシステムと見なすことができますが、より厳密なレベル(別名レベル2およびレベル3)のみがRESTfulと見なされます。

したがって、本質的にすべてのRESTful APIはREST apisですが、すべてのREST apisがRESTfulというわけではありません。

リチャードソン成熟度モデルの定義

1
Andrew Norman

RESTfulはそのクラスのよく知られた「インスタンス」であるのに対し、RESTはアーキテクチャ上の「クラス」と考えてください。

""を気にしてください。ここでは「実際の」プログラミングオブジェクトを扱っていません。

0
Pat

REST(REpresentation State Transfer)は、Webサービスの作成に使用されるアーキテクチャです。

そして

RESTfulはRESTアーキテクチャを使ってサービスを書く方法です。 RESTfulサービスはリソースを公開して、クライアントと対話するためのターゲットを識別します。

0
Manas