RESTとRESTfulの違いは何ですか


540

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

私が最もよく読んだいくつかのことから、いわゆるRESTサービスは実際にはRESTfulなサービスです。では、2つの違いは何ですか。


3
質問の理由は、リンクの記事を読んでフィールディング博士がほとんどのREST実装について何を考えているかを調べた場合、それらはまったくRESTシステムではないためです。それらはRESTfulな動作を示しますが、RESTシステムとして分類することはできません。
AwkwardCoder 09/10/14

4
私は記事を読みましたが、彼がそのような意味的に役に立たない区別に導いたとは思いません。
JasonTrue

3
RESTに関するWikipediaの記事-en.wikipedia.org/wiki/Representational_State_Transfer-2番目の段落-「REST制約への準拠は、しばしば「RESTful」と呼ばれます。」
ネイト

1
@PramodNikumbhはこれを以下で正しく回答しています。「REST」システムは、RESTの幅広い定義に適合するシステムです。それは少なくともいくつかの休息の原則を示しています。「Restful」は、はるかにRESTに準拠したシステムを表します。
Andrew Norman

まあ、名前には混乱があると思います。RESTfulの「フル」はステートレスとステートフルを混同します。これらは、個人的にはRESTとRESTfulの2つの異なるものであり、ステートレスでなければなりません。RESTlesという名前のステートフルRESTを想像してみてください。:)
Waheed

回答:


487

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

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


146
RESTはアーキテクチャであり、RESTfulは形容詞ですか?
manei_cc 2014年

4
@manei_cc:実際には、RESTfulという名前のサービスがあり、RESTアーキテクチャーに準拠しておらず、基本的にはRESTに似たRESTワナビーなどです。「RESTfulサービス」は必ずしもRESTを使用して構築されているわけではないことに注意してくださいアーキテクチャ、しかしジャスティン・エティエが書いたように真実:ウェブの既存の技術とプロトコルを利用する
Azder 2014

7
RESTfulは、本当にRESTを尊重するAPIに使用する必要があります。GETまたはPOSTのみを使用する「REST」Webサービスが多すぎます。RESTfulは、HTTP動詞の完全な使用、およびURL命名規則を強調します。しかし、それは私の見解です。
Martin

1
architectなにかの?URLの?同様にhttps://translation.googleapis.com/language/translate/v2、このRESTスタイルはありますか?
Asif Mushtaq 2017

1
stackoverflow.com/users/3807248/pramod-nikumbhはこれを以下で正しく回答しています
Andrew Norman

194

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

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

REST(REプレゼンテーションSテートT ransfer)は、基本的に、いくつかの原則を持つ開発の建築様式です。

  • ステートレスである必要があります

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

  • 組み込みの暗号化はありません

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

  • 1つだけのプロトコルを使用します-HTTP

  • CRUD操作を実行するため、それは、次のようなHTTP動詞を使用する必要がありgetpostput及びdelete

  • JSONまたはXML、atom、ODataなどの形式でのみ結果を返す必要があります(軽量データ)

REST based services すべてではなく、上記の原則のいくつかに従ってください

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

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

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

Object oriented languagesOOP機能の一部をサポートしています。:JavaScript、VB


ASPドットNET MVC 4はREST-BasedMicrosoft WEB APIですRESTFul

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

MVCはREST APIから次のもののみをサポートします

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

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

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

ただし、MVCでは同時に

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

  • ステートフルにできる

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

これが、MVCがREST-BasedWEB APIをサポートし、上記の原則をすべてサポートする理由ですRESTFul


10
なぜこれが反対票が投じられたのか理解できません。この回答は、質問に対して多くの明確な情報をもたらします。
マルコヴェッキオ2016

5
これまでのベストアンサー
リモン

2
これが最良の答えです。
マリオMeyrelles

2
RESTでFTPを使用できます。参照してください。stackoverflow.com/questions/35534812/...
crazyTech

7
上記の「オブジェクトベース」と「オブジェクト指向」のカテゴリの言語は逆になります。オブジェクト指向言語はOOPSのすべての原則に従いますが、オブジェクトベース言語はいくつかの原則に従います。
Mrchief

119

「REST」は建築パラダイムです。「RESTful」はそのパラダイムの使用法を説明しています。


architectなにかの?URLの?同様にhttps://translation.googleapis.com/language/translate/v2、このRESTスタイルはありますか?
Asif Mushtaq 2017

2
RESTアーキテクチャーには多くの特性が必要です。単にURLを表示するだけでは、RESTの原則に準拠しているとは言えません。
SingleShot 2017

42

Jasonがコメントで述べたように、RESTfulは、REST制約を尊重する何かを説明する形容詞としてのみ使用されます。


29

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

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

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


23

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/


13

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

  1. HTTPメソッドを明示的に使用します。
  2. 無国籍であること。
  3. ディレクトリ構造のようなURIを公開します。
  4. XML、JavaScript Object Notation(JSON)、またはその両方を転送します。

実際には6つの制約があります。
IronBlossom 2014

2
@IronBlossom Careは、欠落している2つで答えを更新しますか?
Paul Fleming、

1
リンク
切れ

10

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


8

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

Parleys.comでのRESTに関するStefan Tilkovのプレゼンテーションは、特にこれが非常に優れています。

本の場合、RichardsonとRubyのRestful Web Servicesに勝るものはありません。


通常のWebサイトはRESTアプリケーションと考えることができますか?
yoyo_fun

1
@yoyo_fun:はい、通常のウェブサイトもRESTfulに構築できます。ある程度の抽象化では、サーバーがHTMLを人間に返すか、JSON(たとえば)をプログラムに返すかは重要ではありません。
ジムフェラン

5

RESTベースのサービスを「RESTfulサービス」と呼びます。

出典私はそれを投稿することを信頼しています:Dr.Dobbs Archive


4

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であるとは限りません

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


2

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

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


1

「RESTサービス」と「RESTfulサービス」は同じものです。

RESTfulシステムとは、RESTfulネットワークアプリケーションのアイデアを生み出した元のドキュメントで定義されいるREST規則に準拠するシステムです

RESTfulnessにはさまざまなレベルがあることに注意してください。全体として、RESTはスタイルであり、標準ではないため、ニーズに基づいて解釈する余地があります。1つの例は、階層型リソースURL(例/things/ID/relatedthings)とフラットURL(例:/things/IDおよび/relatedthings?thing=ID)です。


1

REST(REpresentation State Transfer)は、Webサービスを作成するためのアーキテクチャです。

そして

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


0

RESTは、Webサービスを作成するためのアーキテクチャパターンです。RESTfulサービスは、そのパターンを実装するサービスです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.