0

REST に関するこれらの基本的な質問をするためにここにいるかどうかはわかりません...

REST を理解しようと、実装しようとすればするほど、混乱します。おそらく、人々が REST とは何かを教えに来るときに目にする抽象的な言葉のせいだと思います。例えば、

ウィキペディアからREST、

Representational State Transfer (REST) は、World Wide Web のアーキテクチャを抽象化したものです。より正確には、REST は、分散ハイパーメディア システム内のコンポーネント、コネクタ、およびデータ要素に適用される一連の調整されたアーキテクチャ上の制約から構成されるアーキテクチャ スタイルです。

そしてこちらのリンクから

  1. リソースの表現は統一する必要があります

  2. URL スキームやリソース名マッピングではなく、ハイパーメディアを使用して関係を表す

  3. API への単一のエントリ、そこからのハイパーリンクを使用します (ハイパーリンク?なぜハイパーメディアではないのですか??)

  4. 表現に「自己」リンクを含める

  5. REST は、ActiveRecord モデルを JSON として吐き出すことだけを意味するわけではありません (では、何を吐き出すべきでしょうか??)

では、以下の抽象的な専門用語は何を意味するのでしょうか?

  1. 表現、
  2. 資力、
  3. URLスキーム、
  4. ハイパーメディア(ハイパーテキストハイパーリンクとの違いは何ですか???)、
  5. リソース名のマッピング - to、
  6. ActiveRecord モデル

具体例で説明していただけますか?

4

2 に答える 2

1

表現は、リンクを使用してリソースに要求を行うときにネットワーク経由で送信されるバイトの完全なセットに付けられた名前です。

リソースは、アプリケーションにとって重要な概念であり、クライアント アプリケーションに公開する必要があります。リソースは URL によって識別されます。

技術的には、URL スキームは、コロンの前に表示される URL の最初の数バイトです。例: http、urn、ftp、file など。しかし、あなたが見ているコンテキストでは、URL のパス セグメントとクエリ文字列パラメーターを整理し、URL のそれらの部分に重要性を割り当てるための規則を意味していると思います。

REST の観点から見ると、サーバーは URL 規則を作成できますが、クライアントはそれらの規則について何も知らない必要があります。

ハイパーメディアは、ハイパーリンクをサポートするメディア タイプの分類です。ハイパーテキストは、ハイパーメディアとほぼ同義の古い用語です。理論上、ハイパーメディアはテキストベースのフォーマットである必要はありません。これまでのところ、ハイパーテキストではないハイパーメディア形式については知りません。

ハイパーリンク、リンク、およびWeb リンクは同義です。

残念ながら、これらの用語は定義上抽象的です。これらの概念を実装するには、さまざまな方法があります。

ActiveRecordは、リソースの表現を構築するために使用されるデータを格納するためによく使用される実装概念です。ただし、ActiveRecord インスタンスからのみリソースを作成できるように制限すると、効果的な REST API を実装するのに苦労する可能性があります。


リソースの表現は統一されている必要があります- これは私には意味がありません。「Uniform Interface」と呼ばれる REST 制約があります。ただし、この制約は、一貫したインターフェイスを使用して階層化されたアプリケーションを構築できるようにすることを意味します。つまり、クライアントがサーバーと通信したい場合、プロキシ、ロード バランサー、キャッシュを間に挟むことができます。インターフェイスが一貫しているため、クライアントとサーバーは違いを認識できません。

ハイパーメディアを使用する- ハイパーメディアは、クライアントとサーバーを分離して、どちらかが独立して進化できるようにするのに役立ちます。これが重要でない場合 (つまり、Web サイトと同時にクライアントの JavaScript をいつでも展開できる場合)、そこから多くの価値を得ることはできません。

API への単一のエントリを使用する- 前のポイントを参照してください。独立した進化が必要な場合は、さらに探索してください。

あなたの表現に「自己リンク」を含めてくださいそして再び...

JSON REST はアプリケーションの境界のアーキテクチャ スタイルであるため、REST は単に ActiveRecord モデルを吐き出すことを意味するわけではありません。ActiveRecords をリソースとして公開すると、クライアントがサーバーの実装の詳細に結び付けられます。また、HTTP はいくつかのメソッド (GET、PUT、POST、DELETE、OPTIONS、HEAD) に限定されています。この限られた語彙を補うために、データベース内のレコードとは関係のないリソースを作成する必要があります。

于 2014-12-11T15:00:44.627 に答える