[7] コレクションのメンバーは、 コレクションの内部メンバーや、再帰的に内部メンバーのメンバーを指します。 すなわち、コレクションの「子孫」です。 >>6
[8] コレクションのメンバーURLは、 コレクション自体の内部メンバーURLか、 コレクションのメンバーの内部メンバーURLです >>6。
- 成員 (または 成員資源)
- IRI が集成中に
atom:link
要素で関係edit
またはedit-media
で列挙されている資源。9.1節参照。Atom Protocol は2種類の成員を定義しています。
- エントリー資源: RFC 4287 に定義されている通り、 Atomエントリー文書で表現されている集成の成員。
- 媒体資源: Atomエントリー文書以外の表現を持つ集成の資源。
仕様書:
[201] クライアントは メンバー URI を使って成員資源を取り出し、
編集、削除できます。成員URI は POST
を使って資源を作成するのに成功した場合の Location:
頭欄や、集成フィード中のエントリーの関係 edit
の atom:link
に現れます。
AtomPub
[202] 成員エントリーはリンク関係が edit
であって成員URI を表す atom:link
を含むべきです。
AtomPub
[3] 成員資源 (の表現) を取り出しするには、
クライアントは成員資源の URI について GET
要求を送信します。鯖はそれに対して成員資源の表現を応答します。
AtomPub
[208] 実装者は、キャッシュ制御や実体札などを適当に使うように注意するべきです。
キャッシュが介在している場合には、 GET
で得られた表現が最新のものとは限りません。
AtomPub
[207] 仕様書:
POST /myblog/entries HTTP/1.1 Host: example.org Authorization: Basic ZGFmZnk6c2VjZXJldA== Content-Type: application/atom+xml;type=entry Content-Length: nnn Slug: First Post <?xml version="1.0" ?> <entry xmlns="http://www.w3.org/2005/Atom"> <title>Atom-Powered Robots Run Amok</title> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2007-02-123T17:09:02Z</updated> <author><name>Captain Lansing</name></author> <content>It's something moving... solid metal</content> </entry>
HTTP/1.1 201 Created Date: Fri, 23 Feb 2007 21:17:11 GMT Content-Length: nnn Content-Type: application/atom+xml;type=entry Location: http://example.org/edit/first-post.atom Content-Location: http://example.org/edit/first-post.atom ETag: "e180ee84f0671b1" <?xml version="1.0" ?> <entry xmlns="http://www.w3.org/2005/Atom"> <title>Atom-Powered Robots Run Amok</title> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2007-02-123T17:09:02Z</updated> <author><name>Captain Lansing</name></author> <content>It's something moving... solid metal</content> </entry>
Location:
と Content-Location:
の値が一致しているので、この応答実体は作成された資源の表現そのものです。
応答実体には ETag:
も指定されていて、
この実体札を次に条件付GET
を行う場合に用いることができます。
GET /edit/first-post.atom HTTP/1.1 Host: example.org Authorization: Basic ZGFmZnk6c2VjZXJldA== If-None-Match: "e180ee84f0671b1"
エントリーが変更されていない場合には、 304
応答が返されます。
HTTP/1.1 304 Not Modified Date: Sat, 24 Feb 2007 13:17:11 GMT
さて、クライアントがエントリーを変更し、それを
PUT
するとします。
PUT /edit/first-post.atom HTTP/1.1 Host: example.org Authorization: Basic ZGFmZnk6c2VjZXJldA== Content-Type: application/atom+xml;type=entry Content-Length: nnn If-Match: "e180ee84f0671b1" <?xml version="1.0" ?> <entry xmlns="http://www.w3.org/2005/Atom"> <title>Atom-Powered Robots Run Amok</title> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2007-02-24T16:34:06Z</updated> <author><name>Captain Lansing</name></author> <content>Update: it's a hoax!</content> </entry>
ここで If-Match:
欄に先程の実体札が指定されていますから、
鯖でエントリーが変更されていなければ PUT
によりエントリーは更新されますが、
変更されている場合には 412
応答が返されます。
HTTP/1.1 412 Precondition Failed Date: Sat, 24 Feb 2007 16:34:11 GMT
[4]
成員資源 (の表現) を編集するには、クライアントは成員資源の URI
(成員URI) について PUT
要求を、蓄積する表現と共に行います。
それに対して鯖は、要求が成功すれば状態符号
200
で応答します。
AtomPub
[204] クライアントは、意図せぬデータの損失を防ぐため、成員エントリーや成員リンク・エントリーの編集の際には外来マーク付けも含めて変更しようとしていないメタデータをすべて保持するべきです AtomPub。
[203] 仕様書:
[5]
成員資源を削除するには、クライアントは成員資源の URI
について DELETE
要求を送信します。
それに対して鯖は、要求が成功すれば状態符号
200
で応答します。
AtomPub
[206] 媒体リンク・エントリーを削除したら、 対応する媒体資源も削除されるべきです。 AtomPub
[205] 仕様書:
[414] >>413 は「メンバー資源」という用語を定義しています。
[415] Web Linking にはメンバー資源に相当するものを表すリンク関係型 item
があります。