小米應(yīng)用商店:開放文件存儲使用指南

來源: 小米開放平臺
作者:小米開放平臺
時間:2021-02-26
17982
本文檔介紹了開放文件存儲使用相關(guān)內(nèi)容,您可通過閱讀以下內(nèi)容,了解具體開放文件存儲內(nèi)容。

ZDM1MWZlNi5qcGc.jpg

本文檔介紹了開放文件存儲使用相關(guān)內(nèi)容,您可通過閱讀以下內(nèi)容,了解具體開放文件存儲內(nèi)容。

1.小米開放文件存儲(FDS)簡介

1.1 FDS綜述

小米開放文件存儲(File Storage Service,簡稱FDS),是小米開放平臺(http://dev.xiaomi.com)所提供的眾多云服務(wù)之中的一種。FDS向開發(fā)者提供了簡潔直觀的Restful API,開發(fā)者可以直接通過標(biāo)準(zhǔn)Http協(xié)議來調(diào)用FDS的API,同時,為了方便廣大開發(fā)者,F(xiàn)DS目前提供了Java、PHP和Android平臺的SDK,開發(fā)者可以根據(jù)自己的應(yīng)用需求選用合適的SDK。

1.2 FDS的優(yōu)勢

FDS專注于提供使用簡便、可靠的文件存儲服務(wù),下面是FDS服務(wù)的一些優(yōu)勢:

·簡單的數(shù)據(jù)模型:FDS采用了Bucket/Object數(shù)據(jù)模型,跟業(yè)內(nèi)主流系統(tǒng)保持一致,方便開發(fā)者理解,降低使用門檻;

·直觀易用的API:FDS提供了簡潔的Restful API,開發(fā)者可以通過標(biāo)準(zhǔn)Http協(xié)議直接訪問;

·完善的認(rèn)證與授權(quán)機(jī)制:FDS支持各種身份認(rèn)證機(jī)制(包括簽名、OAuth2.0和小米SSO認(rèn)證),F(xiàn)DS還支持了完備的授權(quán)管理機(jī)制,最大程度的保護(hù)用戶數(shù)據(jù)的安全;

·彈性高可用的服務(wù)質(zhì)量:FDS架構(gòu)上支持良好的水平擴(kuò)展性,對用戶提供7x24高可用的服務(wù);

·靈活的應(yīng)用場景:支持的文件大小不受限制,能很好地適應(yīng)更種應(yīng)用場景;

·低廉的存儲成本:支持Reed-Solomon編碼,在保證數(shù)據(jù)可靠性的前提下,能夠最大程度地節(jié)約存儲成本。

1.3 FDS的基本概念

·桶(Bucket):Bucket是存儲Object的容器,在同一個Region內(nèi),Bucket是全局唯一的。每個Object都存在于某一個Bucket中,一個Bucket里面可以包含很多個Object。

·對象(Object):Object是用戶實(shí)際存儲在FDS中的數(shù)據(jù),包括用戶存儲的文件內(nèi)容和文件相關(guān)的元信息,它們合在一起,統(tǒng)稱為Object。

·區(qū)域(Region):Region是物理上數(shù)據(jù)中心的劃分,一個數(shù)據(jù)中心的FDS稱之為一個Region。同一個Region內(nèi)的Bucket在該Region內(nèi)是全局唯一的。

2.用戶身份認(rèn)證

2.1簽名認(rèn)證

本部分介紹FDS中用到的簽名認(rèn)證的基本原理。

2.1.1基本概念

使用FDS服務(wù)的簽名算法,需要了解以下基本概念:

·App Access Key:開發(fā)者在小米開放平臺申請的App Access Key,用于標(biāo)識開發(fā)者的App;

·App Secret Key:開發(fā)者在小米開放平臺申請App Access Key時頒發(fā)的App Secret Key,這個由用戶自己保存,是用來做簽名時的密鑰;

·Signature:根據(jù)Access Key,Secret Key和用戶請求計算出的數(shù)字簽名,用于驗(yàn)證用戶身份。

2.1.2基于簽名的認(rèn)證過程

用戶要使用簽名來認(rèn)證身份,通常需要按下面的步驟來進(jìn)行:

·構(gòu)建準(zhǔn)備發(fā)往FDS的Http請求;

·使用App Secret Key和構(gòu)建好的請求內(nèi)容,計算簽名;

·將計算好的簽名和App Access Key組合起來,置于Http請求的“authorization”Header中,將請求發(fā)往FDS;

·FDS收到請求,從”authorization”Header中解析中App Access Key和對應(yīng)的簽名;

·FDS用解析出的App Access Key獲取到對應(yīng)的App Secret Key;

·FDS用App Secret Key和請求內(nèi)容進(jìn)行簽名,得到服務(wù)端簽名;

·FDS對比服務(wù)端簽名和用戶請求解析出來簽名,如果一致剛認(rèn)證通過,否則認(rèn)證不通過。

注意:App Secret Key不會在上述請求過程中傳輸。

2.1.3簽名算法

簽名算法是簽名認(rèn)證的核心,以下是簽名算法的詳細(xì)介紹:

·簽名在Http頭中的格式:“authorization:Galaxy-V2“+““+App Access Key+“:“+Signature;

·簽名計算:Signature=Base64(Hmac-Sha1(AppAccessSecret,StringToSign));

·簽名字符串(StringToSign)的構(gòu)造:StringToSign=HttpMethod+“n”+content-md5+“n”+content-type+“n”+date+“n”+CanonicalizedHeaders+CanonicalizedResource;

·CanonicalizedHeaders構(gòu)造:

用戶可以通過“x-xiaomi-“的方式,向FDS傳自定義的Header,CanonicalizedHeaders指的是規(guī)范化過之后的用戶自定義的Headers,規(guī)范化的過程如下:

  1.所有的Header都要轉(zhuǎn)成全小寫;

  2.將Header按Key進(jìn)行字典序排序;

  3.將具有相關(guān)Key的Headers合并,多個值之間用”,”分隔;

  4.將上述字符串連接起來即是CanonicalizedHeaders。

·CanonicalizedResource構(gòu)造:CannonicalizedResource是由用戶請求的Uri的相對路徑加上FDS預(yù)定義的SubResource(Acl等)相關(guān)的參數(shù)組成的。

2.1.4簽名庫

FDS目前提供了C++/Java/PHP版本的簽名庫,詳細(xì)的簽名算法可以參見具體的簽名庫的實(shí)現(xiàn)。

3.Bucket操作REST API指南

3.1列所有Bucket

·語義:列出當(dāng)前用戶所擁有的所有Buckets

·語法:GET/HTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):無

·請求頭:

1614304452(1).png

3.2創(chuàng)建新Bucket

·語義:創(chuàng)建指定名字的Bucket

·語法:PUT/bucket_name HTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Content-Length:content_length Authorization:authorization_string

·請求參數(shù):

1614304488(1).png

·請求頭:

1614304515(1).png

3.3列Bucket下面的Object

·語義:列出指定Bucket下面所有的Objects

·語法:GET/bucket_name HTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):

1614304552(1).png

·請求頭:

1614304597(1).png

3.4刪除Bucket

·語義:刪除指定名字的Bucket

·語法:DELETE/bucket_name HTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):無

·請求頭:

1614304642(1).png

3.5判斷Bucket存在性

·語義:判斷指定的Bucket是否存在

·語法:HEAD/bucket_name HTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):無

·請求頭:

1614304687(1).png

4.Object操作REST API指南

4.1上傳Object(PUT)

·語義:上傳指定名字的Object到指定的Bucket下,同名Object為覆蓋語義

·語法:PUT/bucket_name/object_nameHTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string body

·請求參數(shù):

1614304728(1).png

·請求頭:

1614304761(1).png

4.2上傳Object(POST)

·語義:從指定的Bucket下載指定的Object

·語法:GET/bucket_name/object_nameHTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):

1614304799(1).png

·請求頭:

1614304825(1).png

4.3刪除Object

·語義:從指定的Bucket下刪除指定的Object

·語法:DELETE/bucket_name/object_nameHTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):

1614304868(1).png

·請求頭:

1614304893(1).png

4.4判斷Object存在性

·語義:刪除指定名字的Bucket

·語法:DELETE/bucket_name HTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):無

·請求頭:

1614304939(1).png

4.5判斷Bucket存在性

·語義:判斷指定Bucket下是否存在指定的Object

·語法:HEAD/bucket_name/object_nameHTTP/1.1 Host:files.fds.api.xiaomi.com Date:date Authorization:authorization_string

·請求參數(shù):無

·請求頭:

1614304964(1).png

4.6 Pre-signed URI

Pre-signed URI是FDS提供的一種靈活的共享資源的方式。Object的擁有者使用自己的App Secret Key預(yù)先對Object的訪問鏈接進(jìn)行簽名,生成出帶一定有效期的Pre-signed URI。Object擁有者將該P(yáng)re-signed URI發(fā)給其它用戶,其它用戶在上述有效期內(nèi)可以用該P(yáng)re-signed URI對指定的Object,執(zhí)行指定的操作。

Pre-signed URI的格式如下:http://files.fds.api.xiaomi.com/bucket_name/object_name?Expires=expires&GalaxyAccessKeyId=app_access_key&Signature=signature

·參數(shù)說明:

1614305031(1).png

5.FDS錯誤碼參考

1614305013(1).png

6.其它

6.1使用縮略圖服務(wù)

FDS支持對JPEG/PNG/GIF三種類型的圖片進(jìn)行縮略,用戶可以自行指定縮略的長、寬,具體用法是在請求的URL后面加下列參數(shù):

1614305120(1).png

6.2使用Https進(jìn)行安全訪問

FDS支持通過Https進(jìn)行訪問,將正常訪問的URL中的scheme由Http替換為Https即可。對于比較敏感的用戶信息,請盡量使用Https進(jìn)行上傳、下載。

6.3使用CDN加速下載請求

FDS支持通過CDN加速下載請求,對于下載請求量比較大的應(yīng)用,請盡量使用CDN來進(jìn)行下載。CDN服務(wù)的地址為:

http://cdn.fds.api.xiaomi.com https://cdns.fds.api.xiaomi.com

7.文檔修訂歷史

2014/10/23,完成初始版本。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于小米開放平臺,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
雙十一秘籍 | 11月米盟增收指南助你搶占電商大戰(zhàn)先機(jī)
雙十一秘籍 | 11月米盟增收指南助你搶占電商大戰(zhàn)先機(jī)
雙十一即將來臨,電商預(yù)算爭奪戰(zhàn)已經(jīng)打響!
小米開發(fā)者
小米應(yīng)用商店
2024-10-182024-10-18
小米應(yīng)用商店關(guān)于《APP備案標(biāo)準(zhǔn)變更》的公告
小米應(yīng)用商店關(guān)于《APP備案標(biāo)準(zhǔn)變更》的公告
為了保護(hù)用戶權(quán)益,提升用戶體驗(yàn),根據(jù)《工業(yè)和信息化部關(guān)于開展移動互聯(lián)網(wǎng)應(yīng)用程序備案工作的通知》,小米應(yīng)用商店新增了APP備案包名與主辦單位的要求,以下是詳細(xì)內(nèi)容。
小米開發(fā)者
小米應(yīng)用商店
2024-10-132024-10-13
App各大應(yīng)用商城的排名被哪些因素影響著?(小米/vivo篇)
App各大應(yīng)用商城的排名被哪些因素影響著?(小米/vivo篇)
小米應(yīng)用商店允許在后臺設(shè)置關(guān)鍵詞,8個關(guān)鍵詞,每個詞不超過5個字,權(quán)重從左到右逐漸降低。
App
小米應(yīng)用商店
應(yīng)用商店
2024-10-022024-10-02
米盟10月廣告增長提效指南【附新功能預(yù)告】
米盟10月廣告增長提效指南【附新功能預(yù)告】
國慶長假即將拉開序幕,7天長假將帶來一波流量的高峰。小米廣告聯(lián)盟(以下簡稱:米盟)為開發(fā)者伙伴帶來了10月廣告增長提效指南,內(nèi)含eCPM趨勢和預(yù)算分布預(yù)估、變現(xiàn)提效Tips、新功能爆料,助力開發(fā)者伙伴在小長假期間高效地把握預(yù)算節(jié)奏、提前精準(zhǔn)布局,實(shí)現(xiàn)量效雙贏!
小米開發(fā)者
小米應(yīng)用商店
應(yīng)用商店
2024-10-012024-10-01
優(yōu)質(zhì)服務(wù)商推薦
更多