Conflict

状態符号 409 (HTTP)

[519] 409 (Conflict) は、対象資源の現在の状態と要求との不整合によって要求を処理できなかったことを示す状態符号です >>514

[520] 例えば、編集フォームが含まれるページを表示してからそのフォームを提出するまでの間に提出先の資源が変更されている場合、 409 を返すことができます。

仕様書

意味

[516] 409 は、対象資源の現在の状態との衝突のために要求が完了できなかったことを示します >>514

[517] 409 は、利用者が衝突を解決して要求を再提出できるかもしれない場合に使います >>514, >>3

[4] そうでない場合は 403 を使えます。

構文

[518] は、利用者が衝突の原因を認識できる十分な情報を payload に含めるべきです >>514

[2] payload body には DAV: 名前空間error 要素を使うことができます >>1

[6] WebDAV は、適切な事前条件符号事後条件符号があれば XML を返すべきです。それ以外のエラーでは空の payload body を返しても構いませんし、独自の要素を使ってエラーを表しても構いません。 >>5

[7] 次の事前条件事後条件があります。

文脈

[513] 起源鯖は、 PUT表現が当該対象資源に関する変更できないの制約を (あれば) 満たしているか検証するべきです。満たしていない時には、 満たすように変形を加えるか、適切な説明とともにエラーを返すべきです状態符号としては、 409 を使うことができます。 >>507

[12] PROPPATCH 要求に対する 207 応答内の status 要素では、 指定された値が特性の意味的に正しくないことを表すために使うことができます >>11

[9] MKCOL 要求 >>8PUT 要求 >>10LOCK 要求 >>17 で指定された資源の親となるべきコレクションが存在しない時は、 409 応答を返さなければなりません

[14] COPY 要求 >>13MOVE 要求 >>16 で指定された終点の資源の親となるべきコレクションが存在しない時は、 409 応答を返すことができます。

[15] COPY 要求MOVE 要求において生特性を始点と終点とで同じ動作にできなかった時には、 状態符号 409事後条件符号 preserved-live-properties を使うことができます >>5

[19] UNLOCK 要求において対象資源ロックされていない場合や、 ロック対象資源を含んでいない場合には、 409 応答を返し、 事前条件符号として lock-token-matches-request-uri を使うべきです >>18, >>5

[21] PATCH 要求パッチ文書の適用により衝突が発生する場合には、 409 応答を返すことができます >>20

歴史

[515] RFC 2068 & 2616 (HTTP/1.1) 10.4.10 409 Conflict

The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request. The response body SHOULD include enough information for the user to recognize the source of the conflict. Ideally, the response entity would include enough information for the user or user agent to fix the problem; however, that may might not be possible and is not required.

資源の現在の状態と衝突したために、要求は完了できませんでした。 この符号は、利用者が衝突を解決可能で要求を再提出できそうに思われる場合にのみ認められます。 応答本体は、利用者が衝突の原因を認識できる十分な情報を含んでいるべきです。 理想的には、応答実体は利用者又は利用者エージェントが問題を修正するのに十分な情報を含んでいるのがよいでしょうが、それは可能ではないかもしれませんし、必須ではありません。

Conflicts are most likely to occur in response to a PUT request. For example, if If versioning is were being used and the entity being PUT includes changes to a resource which conflict with those made by an earlier (third-party) request, the server MAY might use the 409 response to indicate that it can't complete the request. In this case, the response entity SHOULD would likely contain a list of the differences between the two versions in a format defined by the response Content-Type.

衝突は PUT 要求への応答で最も起こりそうです。 例えば、版管理が行われており、 PUT している実体が以前の (第3者による) 要求による変更と衝突する変更を含んでいるとしたら、 サーバーは 409 応答を使って要求が完了できなかったことを示すことができるでしょう。 この場合には、応答実体は応答 Content-Type で定義された書式によって、2つの版の差分の一覧を含めることとなるでしょう。

関連

[22] 処理の対象がロックされている場合には、 423 を使うことができます。

[23] Orchestrate (Orchestrate著, ) <https://orchestrate.io/docs/apiref#errors>

409 patch_conflict The patch could not be applied due to a potentially inconsistent state.

[24] Docker Remote API v1.19 - Docker () <https://docs.docker.com/engine/reference/api/docker_remote_api_v1.19/>

409 - conflict name already assigned

[25] Asterisk Project : Asterisk 12 Applications REST API () <http://www.hiastar.com/download/Asterisk-Admin-Guide/Asterisk-12-Applications-REST-API_26478371.html>

409 - Application not subscribed to event source.

[26] RESTful HTTP API - Fedora 4.0 Documentation - DuraSpace Wiki () <https://wiki.duraspace.org/display/FEDORA40/RESTful+HTTP+API>

409 Conflict: if the version label is already in use for another version of this rexource

[27] RFC 4791 - Calendaring Extensions to WebDAV (CalDAV) () <https://tools.ietf.org/html/rfc4791#section-5.3.1.1>