2011-07-21 16 views
5

JSON(またはXML)表現のRESTリソースでURIを使用するのがベストプラクティスですか?例えばRESTリソースのJSON表現は関連リソースのURIを使用する必要がありますか?

たとえば、添付ファイルのリストを持つリソースの場合、すべての添付ファイルには、 http://myserver.com/resources/attachments/のようなURLを使用して、それを取得:

{ 
    fileName: "screenshot.png" 
    contentType: "application/octet-stream" 
    id: 52004 
} 

それでもsから情報を送信する必要があるため、かなり役に立たないなら、私も

{ 
    fileName: "screenshot.png" 
    contentType: "application/octet-stream" 
    id: 52004 
    uri: /resources/attachments/52004 
} 

答えて

8

はい、コレクションの各アイテムへのリンクを含める必要があります。リンクがないと、APIはRESTfulではありません(さらに重要なことに、有用ではありません)。人間によるクライアントが、IDでアイテムを要求する方法の説明よりもむしろリンクしていると思う場合、人間以外のクライアントにも同じことが当てはまります。また、クライアントにアイテムがリンク関係を提供することにより、現在のリソースにどのように関連するかのいくつかのアイデアを与える必要があります。

link : { uri: "/resources/attachments/52004", rel: "/rels/file-attachment" } 

ジョン

+1

これを行うと、 "id"メンバーは完全に冗長です。 – fumanchu

+0

@fumanchu良い点 –

+0

"id"パラメータは完全に冗長ではありません。応答にIDを付けることで、エンドユーザはAPIリファクタリング、URLのバージョン管理、およびそのリソースを参照する他の呼び出しに対するフィルタとして、そのリソースを一意に識別できます。 – trcarden

0

のようなuri要素を追加する必要がありますユーザーがリソースを要求していてURIからではなくそのIDからリソースを取得した場合はerverです。

また、リソースによっては、決して要求されないか、または直接要求できないため、URIを必要としないことがあります。

+0

をREST上のwikipediaのエントリから:「リソースは、本質的に任意のコヒーレントにすることができ、意味のある概念が取り上げられる可能性がある」と語った。ウェブ上で、リソースを識別する方法は、データベースIDではなく、URI経由で行われます。 –

関連する問題