HTTP請(qǐng)求用于與CouchDB進(jìn)行通信。
通過(guò)使用這些請(qǐng)求,可以 -
在通信時(shí),數(shù)據(jù)庫(kù)使用不同的請(qǐng)求格式。 這些請(qǐng)求格式有:get,head,post,put,delete和copy。
在CouchDB中,輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)將以所有操作的JavaScript對(duì)象符號(hào)(JSON)對(duì)象的形式。
請(qǐng)參閱用于與CouchDB通信的HTTP協(xié)議的不同請(qǐng)求格式,如下所列 -
GET:GET請(qǐng)求格式用于獲取特定項(xiàng)目。 要獲取不同的項(xiàng)目,必須發(fā)送特定的網(wǎng)址模式。 在CouchDB中使用此GET請(qǐng)求,以JSON文檔的形式獲取靜態(tài)項(xiàng),數(shù)據(jù)庫(kù)文檔和配置以及統(tǒng)計(jì)信息。
HEAD:HEAD方法用于獲取GET請(qǐng)求的HTTP頭,而不需要響應(yīng)的正文。
POST:Post請(qǐng)求用于上傳數(shù)據(jù)。 在CouchDB中,POST請(qǐng)求主要用于設(shè)置值,上傳文檔,設(shè)置文檔值,還可以啟動(dòng)某些管理命令。
PUT:PUT請(qǐng)求用于創(chuàng)建新對(duì)象,數(shù)據(jù)庫(kù),文檔,視圖和設(shè)計(jì)文檔。
DELETE:DELETE請(qǐng)求用于刪除文檔,視圖和設(shè)計(jì)文檔。
COPY:COPY方法用于復(fù)制文檔和對(duì)象。
提供HTTP標(biāo)頭以獲得正確的格式和編碼。 HTTP請(qǐng)求頭與請(qǐng)求一起發(fā)送,同時(shí)將請(qǐng)求發(fā)送到CouchDB服務(wù)器。 下面將解釋不同的Http請(qǐng)求標(biāo)頭。
Content-type:內(nèi)容類型(Content-type)標(biāo)頭用于指定提供給服務(wù)器的數(shù)據(jù)的內(nèi)容類型以及請(qǐng)求。大多數(shù)情況下,發(fā)送的內(nèi)容類型將是MIME類型或JSON(application/JSON)。 強(qiáng)烈建議在請(qǐng)求上使用Content-type。
Accept:Accept標(biāo)頭用于指定服務(wù)器,客戶端可以理解的數(shù)據(jù)類型列表,以便服務(wù)器將使用這些數(shù)據(jù)類型發(fā)送其響應(yīng)。 一般來(lái)說(shuō),可以發(fā)送客戶端接受的MIME數(shù)據(jù)類型列表,數(shù)據(jù)項(xiàng)之前以冒號(hào)分隔。
在CouchDB中,不需要在查詢中使用Accept,但強(qiáng)烈建議確保返回的數(shù)據(jù)可以由客戶端處理。
HTTP響應(yīng)頭是服務(wù)器發(fā)送的一種響應(yīng)類型。 這些標(biāo)頭提供了有關(guān)服務(wù)器作為響應(yīng)發(fā)送的內(nèi)容的信息。
有4種類型的響應(yīng)頭:
Content-type : 內(nèi)容類型(Content-type)響應(yīng)頭指定服務(wù)器返回的數(shù)據(jù)的MIME類型。對(duì)于大多數(shù)請(qǐng)求,返回的MIME類型是text/plain。
Cache-control:緩存控制(Cache-control)響應(yīng)頭用于建議客戶端處理服務(wù)器發(fā)送的信息。 CouchDB主要返回must-revalidate,這表示如果可能的話,該信息應(yīng)該被重新驗(yàn)證。
Content-length : 內(nèi)容長(zhǎng)度(Content-length)響應(yīng)頭用于獲取服務(wù)器發(fā)送的內(nèi)容的長(zhǎng)度(以字節(jié)為單位)。
Etag : Etag標(biāo)頭用于顯示文檔或視圖的修訂版本。
下表指定了HTTP頭發(fā)送的狀態(tài)代碼及其工作情況:
| 狀態(tài)碼 | 描述 |
|---|---|
| 200 - OK | 當(dāng)請(qǐng)求成功完成時(shí),會(huì)生成此狀態(tài)。 |
| 201 - Created | 創(chuàng)建文檔時(shí)會(huì)生成此狀態(tài)。 |
| 202 - Accepted | 當(dāng)接受請(qǐng)求時(shí),會(huì)生成此狀態(tài)。 |
| 404 - Not Found | 當(dāng)服務(wù)器無(wú)法找到請(qǐng)求的內(nèi)容時(shí),會(huì)發(fā)出此狀態(tài)。 |
| 405 - Resource Not Allowed | 當(dāng)所使用的http請(qǐng)求類型無(wú)效時(shí),會(huì)發(fā)出此狀態(tài)。 |
| 409 - Conflict | 每當(dāng)有任何更新沖突時(shí),都會(huì)發(fā)出此狀態(tài)。 |
| 415 - Bad Content Type | 此狀態(tài)指定服務(wù)器不支持請(qǐng)求的內(nèi)容類型。 |
| 500 - Internal Server Error | 無(wú)論何時(shí)請(qǐng)求發(fā)送無(wú)效數(shù)據(jù),都會(huì)發(fā)出此狀態(tài)。 |
以下是用于直接與數(shù)據(jù)庫(kù)交互的一些URL路徑列表。
| URL | 操作說(shuō)明 |
|---|---|
PUT /db |
PUT url用于創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)。 |
GET /db |
GET url用于獲取有關(guān)現(xiàn)有數(shù)據(jù)庫(kù)的信息。 |
PUT /db/document |
PUT url用于創(chuàng)建文檔/更新現(xiàn)有文檔。 |
GET /db/document |
GET url用于獲取文檔。 |
DELETE /db/document |
DELETE url用于從指定的數(shù)據(jù)庫(kù)中刪除指定的文檔。 |
GET /db/_design/design-doc |
此URL用于獲取設(shè)計(jì)文檔的定義。 |
GET /db/_design/designdoc/_view/view-name |
此URL用于從指定的數(shù)據(jù)庫(kù)訪問(wèn)設(shè)計(jì)文檔中的視圖 - view-name。 |