客戶端決定是否要檢索資源的當前表示形式。使用所謂的「條件GET」。
如果請求消息包含If-Modified-Since,If-Unmodified-Since,If-Match,If-None-Match或If-Notify,則GET方法的語義變爲「條件GET」範圍標題字段。條件GET方法請求僅在條件標頭字段描述的情況下才能傳送實體。條件GET方法旨在通過允許緩存實體刷新而不需要多個請求或傳輸客戶端已經擁有的數據來減少不必要的網絡使用。
(科http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 9.3)
這是如何工作的? C是客戶端,S是服務器。
Ç
GET /path/to/resource
小號
200 OK
ETag: foo
Last-Modified: Tue, 15 Nov 1994 12:45:00 GMT
Ç
客戶端PUT
是個修改版本。
PUT /path/to/resource
If-Match: foo
小號
客戶有當前版本等等資源PUT
是OK。
200 OK
ETag: bar
Last-Modified: Tue, 15 Nov 1994 12:46:00 GMT
Ç
客戶PUT
是個modiefied版本,但在此期間,資源已更改,並且ETag: bar
不匹配任何更長的時間。
PUT /path/to/resource
If-Match: bar
小號
412 Precondition Failed
Ç
客戶GET
S中的當前版本的資源。
GET /PATH/to/resource
小號
200 OK
ETag: baz
Last-Modified: Tue, 15 Nov 1994 12:47:00 GMT
Ç
現在,客戶可以再次PUT
資源。
PUT /path/to/resource
If-Match: ba7
小號
200 OK
ETag: qux
Last-Modified: Tue, 15 Nov 1994 12:48:00 GMT
感謝您的詳細回答,但實際上不是什麼,我是問。當我們談論一個URL時,這是有道理的,但在我的示例中,實體正在被修改,但是該實體的一些屬性用於在不同的URL上創建資源。那有意義嗎? – epitka