### 1.4 如何使用 POST 方法創建資源
POST 方法的應用場合之一是創建新資源,該協議類似于使用“工廠方法模式”創建新對象。
#### 問題描述
您想知道如何創建新資源,請求中需要包含什么內容,以及響應中應該包括什么內容。
#### 解決方案
將一個已存在的資源標識為創建新資源的工廠。雖然您可以把任意資源用做工廠,但常見的做法是使用一個集合資源(詳見 2.3 節)。
讓客戶端向工廠資源提交附有需要創建資源的表述的 `POST` 請求。通過可選支持的 `Slug` 頭, 客戶端可以向服務器建議一個名字,作為被創建資源的URI 的一部分。
資源創建之后,返回響應碼 `201(Created)`,并在 `Location` 頭中包含新創建資源的URI。
如果響應正文包含了新創建資源的完整表述,那么在 `Content-Location` 頭中包含新創建資源的URI。
#### 問題討論
考慮一個為用戶創建“地址”資源的例子,您可以把“用戶”資源作為一個創建新“地址” 的工廠:
~~~
# 請 求
POST /user/smith HTTP/1.1 ?
Host: www.example.org
Content-Type: application/xml;charset=UTF-8
Slug: Home Address ?
<address>
<street>1, Main Street</street>
<city>Some City</city>
</address>
# 響 應
HTTP/1.1 201 Created
Location: http://www.example.org/user/smith/address/home_address ?
Content-Location: http://www.example.org/user/smith/address/home_address ?
Content-Type: application/xml;charset=UTF-8
<address>
<id>urn:example:user:smith:address:1</id>
<atom:link rel="self" href="http://www.example.org/user/smith/address/home_ address"/>
<street>1, Main Street</stret>
<city>Some City</city>
</address>
~~~
? 使用“用戶”資源作為創建“家庭地址”資源的工廠
? 對新資源URI 命名的建議
? 新創建資源的URI
? 響應中表述的URI
在這個例子里,請求包含了需要創建的新資源中的數據,并在 Slug 頭中包含了新資源 URI 的建議名稱。請注意,Slug 頭是由AtomPub(RFC5023)規定的,它只是來自客戶端的建議, 服務器端并不一定要遵循它。可以閱讀第 6 章詳細了解AtomPub。
響應中的狀態碼 201 表明服務器已創建了一個新資源,并在 Location 響應頭中為其指定了URI 中為`http://www.example.org/user/smith/address/home_address`。
Content- Location 頭告訴客戶端表述內容也可以通過這一URL 獲取。
> 雖然使用了 Content-Location 頭信息,您也可以包含新創建資源的Last-Modified 和 ETag 頭信息。
- 《Restful Web Service Cookbook》
- 簡介
- 推薦序
- 第 1 章 使用統一接口
- 1.1 如何保持交互的可見性
- 1.2 何時使用 GET 方法
- 1.3 何時使用 POST 方法
- 1.4 如何使用 POST 方法創建資源
- 目錄
- PHP RESTful
- 理解RESTful架構
- 深入淺出REST
- 表述性狀態轉移
- 無狀態
- 設計指南
- RESTful API 設計指南
- RESTful API 設計最佳實踐
- 測試工具
- soapUI
- 實例
- 豆瓣
- 應用
- 接口規范
- 視頻
- 《Restful API實戰》
- 課程目標
- 第1章 Restful是什么
- 1-1 restful簡介及資源介紹
- 第2章 為什么要使用Restful
- 2-1 Restful中HTTP協議介紹
- 2-2 架構區別
- 第3章 如何使用Restful
- 3-1 restful設計要素
- 3-2 DHC Client
- 3-3 本地開發環境搭建
- 3-4 確認設計要素
- 3-5 數據庫設計
- 3-6 用戶業務邏輯
- 3-7 文章業務邏輯
- 3-8 restfulApi設計要素
- 3-9 初始化運行參數
- 3-10 完善用戶API
- 3-11 完善文章API
- 文摘
- RESTful 接口實現簡明指南
- RESTful Web 服務教程
- 模型表示(Representations)
- 資源定位
- URI中的查詢參數
- 統一接口
- PUT 和 POST 的區別
- 基于 REST 的 Web 服務
- PHP Reatful
- Restful狀態響應碼
- 《REST API 安全設計指南》