成員

メンバー (HTTP)

仕様書

コレクションメンバー

[7] コレクションのメンバー (member) は、 コレクションの内部メンバーや、再帰的に内部メンバーのメンバーを指します。 すなわち、コレクションの「子孫」です。 >>6

[8] コレクションのメンバーURL (member URL) は、 コレクション自体の内部メンバーURLか、 コレクションのメンバーの内部メンバーURLです >>6。

メンバー資源

[1]

成員 (member) (または 成員資源 (member resource) )
IRI が集成中に atom:link 要素で関係 edit または edit-media で列挙されている資源。9.1節参照。Atom Protocol は2種類の成員を定義しています。

仕様書:

メンバー URI

[201] クライアントは メンバー (Member) URI を使って成員資源を取り出し、 編集、削除できます。成員URI は POST を使って資源を作成するのに成功した場合の Location: 頭欄や、集成フィード中のエントリーの関係 edit の atom:link に現れます。 AtomPub

[202] 成員エントリーはリンク関係が edit であって成員URI を表す atom:link を含むべきです。 AtomPub

列挙

[2] 集成の成員の列挙には集成に対して GET 要求を使います。 詳しくは集成フィードの項を参照してください。

取り出し

[3] 成員資源 (の表現) を取り出しするには、 クライアントは成員資源の URI について GET 要求を送信します。鯖はそれに対して成員資源の表現を応答します。 AtomPub

[208] 実装者は、キャッシュ制御や実体札などを適当に使うように注意するべきです。 キャッシュが介在している場合には、 GET で得られた表現が最新のものとは限りません。 AtomPub

[207] 仕様書:

例

[209] AtomPub 仕様書より:

まず、 POST で成員エントリーを作成します。

       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 があります。