2009-08-18 18 views

答えて

9

表現は、データを表示および/または転送するための特定の方法です。同じリソースは、さまざまな方法で表現することができます。

  • としてHTMLページ
  • XML文書
  • としてJSONデータ構造として
  • プレーンテキストとして
  • でもPDFファイル希望の場合
  • ...

「表現」を「データ形式」と交換すると、より理解を深めることができます。

HTML::

<h1>John Doe</h1> 

XML:

<customer-name>John Doe</customer-name> 

JSON:

01 "顧客" リソースため

{ "UserName" : "John Doe", } 

メタファー:

ちょうど絵を考えます。これは、ビットマップ、PNG、JPEG、その他多くのフォーマットやデータ構造として再現できます。それらのすべては同じ絵を示していますが、内部構造が異なります。(彼らの「表現」)

実用的な考慮事項:Webアプリケーション環境で

最も一般的な表現は、ブラウザに送信され、標準出力として(X)HTMLです。 AjaxとWebアプリケーションへの自動アクセスに関しては、XMLとJSONが続きます。

+0

私は今それを得た。ソースがある場合は、何らかの形でそれらを表現する必要があります。しかし、新しい疑問はなぜ私たちが実際の情報源を使用しないのかです。それはサーバーが非常に遅いためですか? – Iguramu

+2

反対に、表現レイヤを追加することは、キャッシュやその他の速度の最適化とは関係ありません。 ほとんどの場合、元の送信元だけを送信することはできません。あなたのデータがMySQLデータベースから来たら、あなたは何を送るでしょうか?あなたはあなたのデータをある種の表現に変換する必要があります。 –

+0

http://tomayko.com/writings/rest-to-my-wifeの最後の段落をチェックすることができます。 Ryanは、「名詞は普遍的なものではなく、動詞は多形性ではない」と言っています。 XMLは普遍的なデータ定義言語ではありませんか? – Iguramu

1

リソースは、基本的にはデータの集合です。この例では、リソースは特定の顧客との関連データです。

リソースを取得すると、そのリソースが取得されます。現在、ほとんどのデータには、複数の表現があります。データテーブルやチャートなどを考えてみてください。 この例では、HTTP受け入れヘッダーを設定することによって、受信する表現を定義しています。 xml形式の最初の例では、vcard形式の2番目の例です。

+0

クライアントは、どの方法で交渉するかを決定しますか?サーバーは何かをする必要がありますか?例えば、クライアントがXML表現をしたいのであれば、サーバは何かをしなければならないのか、それともリソースが十分であるのか。 – Iguramu

+1

さて、サーバーは利用可能なデータからxml表現を生成し、それをクライアントに送り返さなければなりません。 – Zed

+0

は、すべてのWebサービスが行うのと同じことです。私は "表現"を意味します。他人とどうやってコミュニケーションを取るのではないか – Iguramu

1

これを見てみましょう:REST Wikipedia article

リソースは、サーバー、「もの」に何かある、と記事は、ちょうどあなたが複数のメッセージを約返さギ持つことができると言っているという点で、それを記述する「もの」異なる方法...

+0

もし私がその「もの」を変えたら、私は資源を変えるのですか?もしそうでなければ、どのように私は資源を変更できますか? – Iguramu

+1

ウィキペディアの記事を参照しないでください。それは陰鬱な状態であり、信頼できる情報源に依存していません。 – aehlke

0

RESTを定義するRoy Fielding's dissertationをご覧ください。

+0

私はほとんど読んでいます。しかし、彼は「すべてのRESTインタラクションはステートレスです」と述べています。私はそれに同意します。では、なぜRESTの名前に「状態転送」があるのですか?彼がステートレスであっても "状態移転"と言ったときに本当に私たちに言いたいことは何ですか? – Iguramu

+2

インタラクション自体はステートレスです。各リクエストとレスポンスの処理は、状態の知識を必要としません。サーバーは要求間に状態を維持しません。ただし、クライアントはスタック全体の残りの部分に対して透過的な状態を維持できます。 – aehlke

0

実際、「表現」はこれらの答えよりも抽象的です。 「リプレゼンテーション」とは、単にリソース全体ではないことを意味します。たとえば、社内HRデータベースのリソースである従業員レコードがあります。 「従業員」は、RESTfulアーキテクチャを介して公開する明白なリソース名詞です。しかし、私の従業員IDに電子メールURIでアクセスすると、その表現は、HR特典URIを通じて従業員IDにアクセスするときに表示される表現とはまったく異なります。

DRの答え(JSON、XMLなど)は、実際にはREST用語ではメディアタイプと呼ばれています。これは単にレスポンスのデータ形式です。