57

REST リソースとは何ですか? また、REST リソースはリソース名およびリソース表現とどのように関連していますか?

このテーマに関する記事をいくつか読みましたが、それらは抽象的すぎて、以前よりも混乱してしまいました。

次の URL はリソースですか? そうである場合、そのリソースの名前とその表現は何ですか?

http://api.example.com/users.json?length=2&offset=5

URL の GET 応答は次のようになります。

[
   {
      id: 6,
      name: "John"
   },
   {
      id: 7,
      name: "Jane"
   }
]
4

11 に答える 11

46

RESTリソースに関する記事が抽象的である理由は、RESTリソースの概念が抽象的であるためです。それは基本的に「あなたが提供するURLによってアクセスされるものは何でも」です。したがって、あなたの例では、リソースは、より大きなリストのオフセット5から始まる2人のユーザーのリストになります。リソースがどのように実装されるかは、実装を作成する人でない限り、気にしない詳細であることに注意してください。

次のURLはリソースですか?

URLはリソースではなく、リソースを識別するラベルです。必要に応じて、リソースの名前です。

JSONはリソース の表現です。

于 2012-05-29T12:46:16.377 に答える
34

リソースとは

リソースとは、それ自体が物として参照されるほど重要なものです。ユーザーが「それへのハイパーテキスト リンクを作成する、それに関するアサーションを作成または反論する、その表現を取得またはキャッシュする、別の表現への参照によってそのすべてまたは一部を含める、それに注釈を付ける、またはそれに他の操作を実行する」場合」の場合は、それをリソースにする必要があります。

通常、リソースとは、コンピューターに格納でき、ビット ストリームとして表すことができるものです。つまり、ドキュメント、データベース内の行、またはアルゴリズムの実行結果です。リソースは、リンゴのような物理的なオブジェクトである場合もあれば、勇気のような抽象的な概念である場合もありますが、(後で説明するように) そのようなリソースの表現は、期待を裏切るものに違いありません。考えられるリソースは次のとおりです。

  • ソフトウェア リリースのバージョン 1.0.3
  • ソフトウェア リリースの最新バージョン
  • 2006 年 10 月 24 日の最初のブログ エントリ
  • アーカンソー州リトルロックの道路地図
  • クラゲに関するいくつかの情報
  • クラゲに関するリソースのディレクトリ
  • 1024 の次の素数
  • 1024 の次の 5 つの素数
  • Q42004の販売数
  • 2人の知人、アリスとボブの関係
  • バグ データベースで未解決のバグのリスト

テキストは、O'Reilly の本「RESTful Web サービス」からのものです。

于 2012-06-04T15:23:24.297 に答える
17

URL は、リソース、その名前、またはその表現ではありません。

URL はリソースの場所を示すだけで、この URL で GET、POST、PUT、DELETE などを呼び出してリソースを呼び出すことができます。

返されたデータはリソースであり、データの形式はその表現です。

与えられた GET パラメータを持つ URL が JSON リソースを出力できるとしましょう - これはこのリソースの JSON 表現です。GET の他のフラグを使用すると、XML の同じデータで応答できます。これは、まったく同じリソースの別の表現になります。

編集:OPへのコメントと私の答えのために、別の説明を追加しています。

また、リソース名は「スクリプト名」と見なされます。たとえば、この場合、users.jsonこのリソース名はリソース表現自体を自己記述しています。このリソースを呼び出すときは、リソースが JSON であることを期待しますが、たとえば呼び出すときはusers.xml、 XML のデータが必要です。

  1. GET でパラメーターを変更するとoffset、応答に別のデータ セットが含まれます。それは新しいリソースですか、それともその表現ですか?
  2. GET の応答で返される列を定義するとき、それは別のリソースまたは別の表現ですか?
  1. さて、ここで問題と答えは明らかです。私たちはまだ同じ URL を呼び出し、サーバーは同じ形式のデータで応答します (まだ JSON です)。データにはまだユーザーに関する情報が含まれています。新しいオフセット パラメータ。したがって、以前と同じ表現と同じリソース名を持つ同じリソースであることは明らかです。
  2. 2 番目の問題は少し混乱する可能性があります。同じリソースを呼び出していますが、リソースには同じデータ (定義済みの列セットのみを含む) が含まれており、データの表現は同じですが、別のリソースのように見える場合があります。しかし、上記の段落のポイントにより、それは別のリソースや別の表現でもありません。データ セットに含まれる情報は少なくなりますが、要求側 (このデータ セットをフィルタリングする側) はこれを考慮し、それに応じて動作する必要があります。繰り返しますが、同じリソース名と同じリソース表現を持つ同じリソースです。
于 2012-05-29T12:48:05.520 に答える
13

REST リソースとは何ですか? また、REST リソースはリソース名およびリソース表現とどのように関連していますか?

REST は、HTTP 動詞 (GET、POST、PUT、DELETE など) を適切に使用する以上の意味はありません。

次の URL はリソースですか?

すべての URL は、リソースの場所をコンピューターに伝える文字列です。(したがって、名前:Uniform Resource Locator)。

于 2012-05-29T12:37:19.520 に答える
7

リソースは次のとおりです。

  • 名詞
  • それはユニークです
  • データとして表現できる
  • 少なくとも 1 つの URI を持つ

詳細については、私のブログ投稿、What, Exactly, Is a RESTful Resource? を参照してください。

于 2014-06-15T19:07:55.100 に答える
5

概念的には、リソースは、URL を使用して Web 上でアクセスできるすべてのものと考えることができます。このルールを守ればhttp://api.example.com/users.json?length=2&offset=5、リソースと見なすことができます

于 2012-05-29T12:38:44.620 に答える
4

Representational State Transfer(REST)は、WorldWideWebなどの分散システム用のソフトウェアアーキテクチャのスタイルです。RESTスタイルのアーキテクチャは、クライアントとサーバーで構成されます。クライアントはサーバーへの要求を開始します。サーバーは要求を処理し、適切な応答を返します。リクエストとレスポンスは、リソースの表現の転送を中心に構築されています。リソースは、URLを使用してリンクされた、アドレス可能なオブジェクトのセットです。基本的にはファイルとドキュメントです。Quentinが上で正しく指摘したように、RESTアーキテクチャは、HTTP動詞GET / POST / PUT /DELETE...を使用することを意味します。

于 2012-05-29T12:49:29.090 に答える
2

具体的な(またはそうあるべきである)「ID」ではなく、相対パラメーターと思われるもののみを提供しました。get 操作は冪等でなければならないことを忘れないでください (つまり、同じ結果で繰り返し可能です)。

于 2012-05-29T12:37:47.380 に答える
-3

REST は REpresentational State Transfer の略です。これは、変数情報をある場所から別の場所に転送する方法です。これを行う一般的な方法は、JSON を使用することです。これは、情報を失うことなく変数を転送できるように変数をフォーマットする方法です。

たとえば、PHP には JSON サポートが組み込まれています。PHP 配列を に渡すと、json_encode($array)投稿した形式で文字列が出力されます (ちなみに、これは変数と情報を提供するため、実際には REST リソースです)。

PHP では、投稿した配列は次のようになります。

Array (

    [0]=>Array (
        ['id']=>6;
        ['name']=>'John';
    )
    [1]=>Array (
        ['id']=>7;
        ['name']=>'Jane';
    )

)
于 2012-05-29T12:35:49.663 に答える