閱讀806 返回首頁    go 網易 go 網易蜂巢


對象操作

目錄

DELETE Object

描述
刪除一個對象。

語法

DELETE /${ObjectKey} HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}

請求參數

參數 描述 是否必須
ObjectKey 刪除對象的對象名稱
類型:字符串
Yes

響應頭

Header 描述
無特定頭部 除通用返回頭部外,無特殊頭部
類型:字符串

示例
Request

DELETE /1.jpg HTTP/1.1
HOST: dream.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS

細節描述
1. 如果 Bucket 不存在,返回 404 no content 錯誤。錯誤碼:NoSuchBucket。

2. 隻有 Bucket 的擁有者才能刪除 Bucket 中的 Object 。非 Bucket 擁有者執行 DELETE Object 操作將返回 403 Forbidden 錯誤。錯誤碼:AccessDenied。

3. 如果要刪除的 Object 不存在,返回 404- NoSuchKey 。

DELETE Multiple Objects

描述
Delete Multiple Object 操作支持用戶通過一個 HTTP 請求刪除同一個 Bucket 中的多個 Object。Delete Multiple Object 操作支持一次請求內最多刪除1000個 Object,並提供兩種返回模式:詳細( verbose )模式和簡單( quiet )模式:

    詳細模式: NOS 返回的消息體中會包含每一個刪除 Object 的結果。

    簡單模式: NOS 返回的消息體中隻包含刪除過程中出錯的 Object 結果;如果所有刪除都成功的話,則沒有消息體。

語法

POST / HTTP/1.1
HOST: ${BucketName}.${endpoint}
Content-Length: ${length}
Date: ${date}
Authorization: ${signature}

請求元素

Element 描述
Delete 多重刪除的請求容器元素
類型:容器
Quiet 是否顯示具體刪除信息
類型:布爾值
父節點:Delete
Object 要刪除的單個對象的容器元素
類型:容器
父節點:Delete
Key 要刪除的對象鍵值
類型:字符串
父節點:Object
VersionId 要刪除的對象版本號
類型:數字
父節點:Object


響應頭

Element
DeleteResult 多重刪除的響應容器元素
類型:容器
Deleted 已被成功刪除的容器元素
類型:容器
父節點:DeleteResult
Key 已刪除的對象鍵值
類型:字符串
父節點:Deleted,Error
Error 刪除失敗的對象版本號
類型:容器
父節點:DeleteResult
Code 刪除失敗返回的錯誤碼
類型:字符串
父節點:Error
Message 刪除失敗返回的詳細錯誤描述
類型:字符串
父節點:Error


示例
Request

POST /?delete HTTP/1.1
HOST: dream.nos-eastchina1.126.net
Content-Length: 123
Content-MD5: cdb586d8ee4952fdcc234e8712ea2bdb
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

<Delete>
    <Quiet>true</Quiet>
        <Object>
            <Key>1.jpg</Key>
        </Object>
        <Object>
            <Key>2.jpg</Key>
        </Object>
</Delete>

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Fri, 02 Feb 2012 01:53:42 GMT
Content-Length: 251
Connection: close
Server: NOS

<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult>
<Deleted>
            <Key>1.jpg</Key>
    </Deleted>
    <Error>
            <Key>2.jpg</Key>
            <Code>AccessDenied</Code>
            <Message>Access Denied</Message>
    </Error>
    <Error>
            <Key>3.jpg</Key>
            <Code>NoSuchKey</Code>
            <Message>No Such Key</Message>
    </Error>
</DeleteResult>

細節描述
1. 如果 Bucket 不存在,返回 404 no content 錯誤。錯誤碼:NoSuchBucket。

2. 隻有 Bucket 的擁有者才能刪除 Bucket 中的 Object。非 Bucket 擁有者執行 DELETE multiple Objects 操作將返回 403 Forbidden 錯誤。錯誤碼:AccessDenied。

3. Delete Multiple Object 請求默認是詳細( verbose )模式。

4. 在 Delete Multiple Object 請求中刪除一個不存在的 Object,仍然認為是成功的。

5. Delete Multiple Object 的消息體最大允許 2MB 的內容,超過 2MB 會返回 MalformedXML 錯誤碼。

6. Delete Multiple Object 請求最多允許一次刪除 1000個 Object;超過1000個 Object 會返回 MalformedXML錯誤碼。

7. 如果 HTTP 請求的 BODY XML 格式有誤,返回 400 Bad Request 消息。錯誤碼:MalformedXML。

8. HTTP 請求頭 Content-Length 必須,否則返回 411 Length Required 消息。錯誤碼:MissingContentLength。

GET Object

描述
讀取對象內容,返回對象流。

語法

GET /${ObjectKey}?download=${download}&ifNotFound=${ifNotFound} HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}
Range: ${range}

請求參數

參數 描述
download 通過瀏覽器打開時,通過指定該值,瀏覽器將進行下載而非在瀏覽器中直接打開
當 NOS 發現請求的Url中有該值時,會在響應中增加標準HTTP字段 Content-Disposition,如下:
Content-Disposition: attachment; filename=”<file_name>”
類型:字符串(經過urlencode編碼)
限製:字符串長度不得超過256字節(未經過編碼時)
ifNotFound 通過該參數,可以指定當訪問的對象不存在時,期望返回的對象內容(注意此時返回值為404)
類型:字符串(經過urlencode編碼)


響應頭

參數 描述
Range 下載指定的數據塊,Range Header參考RFC 2616
類型:字符串
默認:無
If-Modified-Since 隻有當指定時間之後做過修改操作才返回這個對象,否則返回304(Not Modifed)
類型:字符串
默認:無


示例
Request

GET /1.jpg HTTP/1.1
HOST: dream.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
Range: 0-1024
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

Response

HTTP/1.1 206 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Content-Length: 1024
Content-Range: 0-1024/234564
    ETag: d41d8cd98f00b204e9800998ecf8427e
Date: Wed, 01 Mar 2012 21:34:55 GMT
    Last-Modified: Tue, 05 Jul 2016 17:32:21 Asia/Shanghai
Connection: close
Server: NOS

[1024 bytes of binary data]

細節描述
1. 如果 Bucket 不存在,返回 404 no content 錯誤。錯誤碼:NoSuchBucket。

2. NOS 支持匿名讀,此時需要設置桶為 Public-read。如果試圖讀取沒有讀權限的 Bucket 中的 Object,返回403 Forbidden錯誤。錯誤碼:AccessDenied。

3. GetObject 通過 range 參數可以支持斷點續傳,對於比較大的 Object 建議使用該功能。     a) 表示頭500個字節:bytes=0-499

    b) 表示第二個500字節:bytes=500-999

    c) 表示最後500個字節:bytes=-500

    d) 表示500字節以後的範圍:bytes=500-

    Range 設置必須嚴格符合上述規則,否則返回 416 Requested Range Not Satisfiable 錯誤。錯誤碼:InvalidRange。

4. 如果文件修改時間早於 If-Modified-Since,返回 304 Not Modified。

5. 如果文件不存在返回 404 Not Found 錯誤。錯誤碼:NoSuchKey。

6. Get Object 返回的 HTTP 頭中還包含對象的 ETag、Content-Type、Last-Modified 等信息。

7. 若指定了 ifNotFound 參數,當訪問指定對象不存在時,NOS 會進一步查找 ifNotFound 參數指定的對象,若存在,則返回 ifNotFound 對象內容,返回值為 404,若不存在,則直接返回 NoSuchKey 錯誤。

8. 如果返回的對象是分塊上傳對象,etag 不是由對應文件的 md5 生成的。etag 尾部的 -1 無特殊含義,隻是作為標誌。

HEAD Object

描述
獲取對象相關信息,返回對象相關元數據信息。該接口通常也用來判斷對象存在性和是否有權限。

語法

HEAD /${ObjectKey} HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Authorization: ${signature}

請求參數

參數 描述 是否必須
ObjectKey 對象名
類型:字符串
默認:無
No

請求頭

Header 描述
If-Modified-Since 隻有當指定時間之後做過修改操作才返回這個對象,否則返回304(Not Modifed)
類型:字符串
默認:無


示例
Request

HEAD /1.jpg?versionId=3332619744290771 HTTP/1.1
HOST: dream.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Content-Type: image
Date: Fri, 02 Feb 2012 01:53:42 GMT
Last-Modified: Sun, 1 Jan 2012 12:00:00 GMT
    ETag: d41d8cd98f00b204e9800998ecf8427e
Connection: close
Server: NOS

細節描述
1. 不論正常返回 200 OK 還是非正常返回,Head Object 都不返回消息體。所有對象元數據都包含在 HTTP 返回頭中。

2. 如果 Bucket 不存在,返回 404 no content 錯誤。錯誤碼:NoSuchBucket。

3. 隻有 Bucket 的擁有者才能獲取 Bucket 中 Object 的元數據信息。非 Bucket 擁有者執行 HEAD Object 操作將返回 403 Forbidden 錯誤。錯誤碼:AccessDenied。

4. 如果對象是分塊上傳的對象,返回的 etag 不是由該對象對應的文件的 md5 生成的。etag 尾部的 -1 無特殊含義,隻是作為標誌。

PUT Object

描述
PUT Object接口把對象上傳到一個桶中。主要特性有:

  • 持久特性,返回成功,則代表對象所有備份已經安全存儲。
  • 並發特性,對象存儲不提供鎖機製,同時寫一個對象,則後完成的會覆蓋前者。
  • 數據完整特性,為了保證數據不被損壞,在 Content-MD5頭設置對象的MD5摘要,服務器會比對收到的二進製內容。也可以邊傳輸邊計算MD5,傳完後跟響應的ETag屬性對比。

語法

PUT /${ObjectKey} HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Content-Length: ${length}
Content-MD5: ${md5}
Authorization: ${signature}

請求頭定義

參數 描述
Content-Length 對象的大小
類型:字符串
默認:無
Content-MD5 128位MD5摘要經過Base64編碼的值,用來檢查網絡傳輸過程中文件是否損壞
類型:字符串
默認:無
x-nos-meta- 以該前綴開頭的header都將被認為是用戶自定義的元數據,比如:x-nos-meta-title: TITLE 這個header會把title:TITLE作為用戶自定義元數據key-value對。
類型:字符串
默認:無

示例
Request

PUT /1.jpg HTTP/1.1
HOST: dream.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
Content-Type: image/jpeg
Content-Length: 4096
Content-MD5: fbacf535f27731c9771645a39863328
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

[4096 bytes of Object data]

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 12 Oct 2012 17:50:00 GMT
ETag: fbacf535f27731c9771645a39863328
Connection: close
Server: NOS


細節描述
1. 如果 Bucket 不存在,返回404 no content錯誤。錯誤碼:NoSuchBucket。

2. 隻有 Bucket 的擁有者才能向 Bucket 中 PUT Object 。非 Bucket 擁有者執行 PUT Object 操作將返回 403 Forbidden 錯誤。錯誤碼:AccessDenied。

3. 如果 Put Object 請求帶 Content-MD5 頭,NOS 會將其與實際上傳文件內容的 MD5 值進行對比,如果不一致,說明用戶操作有誤,或者文件在傳輸過程中出錯,返回 400 Bad Request 錯誤。錯誤碼:BadDigest。

4. 如果 Put Object 請求不帶 Content-MD5 頭,NOS 會將收到文件的 MD5 值放在返回給用戶的請求頭” ETag ”中,以便用戶檢查 NOS 上的數據和要上傳的數據內容一致。

5. PUT Object 請求頭中的 Content-Length 必須和 HTTP BODY 的長度一致,否則返回 400 Bad Request 。錯誤碼:IncompleteBody。

6. 如果在 PutObject 的時候,攜帶以 x-nos-meta- 為前綴的參數,則視為 Meta data,比如 x-nos-meta-location 。一個 Object 可以有多個類似的參數,但所有的 Meta data 總大小不能超過2k。

7. 如果 Head 中沒有加入 Content-Length 參數,會返回 411 Length Required 錯誤。錯誤碼:MissingContentLength。

8.如果用戶數據已經達到配額上線,則返回 403 Forbidden 錯誤。錯誤碼:QuotaExceeded。

9.如果添加文件長度超過 100M,返回錯誤消息 400 Bad Request。錯誤碼:EntityTooLarge。建議大對象使用分塊接口。

10.PUT Object 允許創建空文件。Object 名長度不能超過1000字節,否則錯誤消息 400 Bad Request。錯誤碼:InvalidArgument。

PUT Object - Copy

描述
遠程拷貝操作,生成一個新的對象,相當於”一次GET”+”一次PUT”。

語法

PUT /${DestinationObjectKey} HTTP/1.1
HOST: ${DestinationBucketName}.${endpoint}
Date: ${date}
x-nos-copy-source: /${SourceBucketName}/${SourceObjectKey}
Authorization: ${signature}


請求頭

Header 描述 是否必須
x-nos-copy-source 拷貝的源對象
類型:字符串
默認:無
限製:該字符串必須做一下URL Encode,並且對該桶有讀權限
YES

示例
Request

PUT /2.jpg HTTP/1.1
HOST: photo.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
x-nos-move-source: /dream/1.jpg
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS

PUT Object - Move

描述
遠程移動操作,生成一個新的對象,相當於”一次COPY”+”一次DELETE”,但不涉及物理文件的 拷貝動作,僅僅修改元數據,不支持跨桶 move 操作。

語法

PUT /${DestinationObjectKey} HTTP/1.1
HOST: ${DestinationBucketName}.${endpoint}
Date: ${date}
x-nos-move-source: /${SourceBucketName}/${SourceObjectKey}
Authorization: ${signature}


請求頭定義

參數 描述 是否必須
x-nos-move-source 對象原來的桶號和名稱
類型:字符串
默認:無
限製:該字符串必須做一下URL Encode,並且對該桶有讀權限
YES


示例
Request

PUT /1.jpg HTTP/1.1
HOST: dream.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
Content-Type: image/jpeg
Content-Length: 4096
Content-MD5: fbacf535f27731c9771645a39863328
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE

[4096 bytes of Object data]

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 12 Oct 2012 17:50:00 GMT
ETag: fbacf535f27731c9771645a39863328
Connection: close
Server: NOS

PUT Obejct Meta

描述
修改獲取對象時的 HTTP 響應的響應首部。

語法

PUT /${ObjectKey}?meta HTTP/1.1
HOST: ${BucketName}.${endpoint}
Date: ${date}
Content-Length: ${length}
Content-MD5: ${md5}
Authorization: ${signature}
Content-Type: ${type}
Content-Encoding: ${encoding}
Cache-Control : ${cache-control}
Expires : ${expires}
Content-Disposition : ${disposition}
Content-Language : ${language}

請求頭

Header 描述 是否必須
Content-Type 對象所屬類型
類型:字符串
默認:application/octet-stream
NO
Content-Encoding 對象編碼格式
類型:字符串
默認:無
NO
Cache-Control 對象緩存控製
類型:字符串
默認:無
NO
Expires 緩存的失效日期
類型:字符串
默認:無
NO
Content-Disposition 對象的默認文件名
類型:字符串
默認:無
NO
Content-Language 對象內容所屬語言
類型:字符串
默認:無
NO
x-nos-meta- 以該前綴開頭的header都將被認為是用戶自定義的元數據,比如:x-nos-meta-title: TITLE 這個header會把title:TITLE作為用戶自定義元數據key-value對。
類型:字符串
默認:無
NO


示例
Request

PUT /2.jpg?meta HTTP/1.1
HOST: photo.nos-eastchina1.126.net
Date: Fri, 10 Feb 2012 21:34:55 GMT
Authorization: NOS I_AM_ACCESS_ID:I_AM_SIGNATURE
Content-Type: image/jpeg
Content-Encoding: utf-8
Cache-Control: max-age=0
Expires: Fri, 10 Feb 2012 21:34:55 GMT
Content-Language: en

Response

HTTP/1.1 200 OK
x-nos-request-id: 17b21e42ac11000001390ab891440240
Date: Wed, 01 Mar 2012 21:34:55 GMT
Connection: close
Server: NOS

細節描述
1. 如果要修改的 Object 不存在,返回 404 Not Found。

2. 如果用戶輸入非法的 Content-Type 則 Content-Type 自動為 application/octet-stream ,其他參數不檢驗合法性。

3.如果用戶使用 PutObjectMeta 接口中沒有指定某項元數據,那麼認為該元數據在本次修改中設置為空;如果 Content-Type 沒有指定,統一把 Content-type 修改為 application/octet-stream。

4.Content-Disposition 如果沒有對應的記錄,使用 GET Object 接口時通過默認的規則返回。默認的規則是根據對象的 objectname生成。

5.本接口的權限控製類型與PUT Object一致。

最後更新:2017-01-03 10:48:53

  上一篇:go 陝西地區管局規則
  下一篇:go 集群API