以下に、RESTful API の標準 URL をいくつか示します。
1 つ目は 1 人のユーザーを取得し、2 つ目はユーザーのコレクション (20 としましょう) を取得します。
これらの URL を指す" REST " 用語は何ですか? それらをリソースと呼ぶのは正しいですか?1 番目がリソースの場合、2 番目はリソース コレクションである必要がありますか?それともコレクション タイプのリソースである必要がありますか?
以下に、RESTful API の標準 URL をいくつか示します。
1 つ目は 1 人のユーザーを取得し、2 つ目はユーザーのコレクション (20 としましょう) を取得します。
これらの URL を指す" REST " 用語は何ですか? それらをリソースと呼ぶのは正しいですか?1 番目がリソースの場合、2 番目はリソース コレクションである必要がありますか?それともコレクション タイプのリソースである必要がありますか?
RESTful アプリケーションのすべての URI はリソースであり、この説明で十分です。
同じタイプの複数のリソースにリンクするリソースはコレクションと呼ばれることがありますが、その正式な名前はありません。コレクションであろうとなかろうと、すべてのリソースはリンクを持つことができます。
リソース間のリンクは、RESTful システムのハイパーメディア部分です。最近、これを表す新しい用語が登場しました。HATEOAS (アプリケーション状態のエンジンとしてのハイパーメディア) です。
コレクションに複数形の名前を付けることは一般的な良い習慣であるため、/users/
サンプルは正しいようです。user 123 はusersコレクションの子なので/users/123
、複数形でも入れたほうがいいかもしれません。
RESTful な HATEOAS アプリケーションは、/users/
個々のリソースを指すリンクのリストに応答します。何かのようなもの:
{
"links": [
{
"href" : "/users/123/"
"title" : "Alexandre Gaigalas"
},
{
"href" : "/users/125/"
"title" : "John Doe"
},
]
}
または XML で:
<link href="/users/123" title="Alexandre Gaigalas">
...
links
JSONのオブジェクトまたは XML のタグ以外の追加情報が提供される場合があります。
これらのリンクは、リソース間の RESTful なハイパーメディア関係を安定させます。私が提供したサンプルは、ほとんどがコレクションと個人の間で階層化されていますが、他のタイプのリンクが宣言されている可能性があります。
<link href="/users/123/picture.jpg" title="Alexandre Gaigalas avatar" rel="picture">
コレクションの用語は、主にプログラミング言語で RESTful な実装を抽象化するために作成されたため、開発者は同様のリソースのグループをより簡単にグループ化および操作できます。
存在する場合、クエリ文字列パラメーターはさまざまなリソースも識別するため、/users/?since=2009
とは異なり/users/
ます。非常に似ていますが、どちらも異なるリソースです。
フラグメント識別子は、サーバーに送信されませんが、別のリソースと見なされるため、/users/123#bio
とは異なり/users/123
ます。
可能であれば、より意味のあるページネーションが優れています。ページ番号は頻繁に変化するため、RESTful に処理するのは困難です。頻繁に更新されるコレクション (たとえば、StackOverflow の質問のリストなど) がある場合、ページ 1 が頻繁に変更され、ユーザーはページ 1 からページ 2 に変更するアイテムを失う可能性があります。ほとんどのコレクションは、日付またはアルファベット順にページ分割できます。増分ページ番号は間違っていませんが、より優れたメカニズムがあります。