|
|
51CTO旗下网站
|
|
移动端

3.3.3 访问REST 接口

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍访问REST 接口。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-13 12:18

3.3.3 访问REST 接口

存储服务提供了丰富的REST 接口,通常情况下建议用户直接使用存储客户端库,在一些特别的应用场景中可能需要调用存储REST 接口。文档https://docs.microsoft.com/en-us/rest/api/storageservices/Azure-storage-services-rest-api-reference 介绍了存储公开的REST 接口,本文内容以File 服务的List Share 和Create Share 调用过程进行讲解。

1. List Share

接口文档:https://docs.microsoft.com/en-us/rest/api/storageservices/list-shares

请求地址:https://mystorageaccount.file.core.chinacloudapi.cn/?comp=list

请求方法:GET;

必要参数:Authorization、x-ms-date、x-ms-version。

o x-ms-date:请求时间(UTC)。示例:Tue, 01 Aug 2017 03:39:27 GMT;

o x-ms-version:请求存储服务的版本。示例:2015-02-21;

o Authorization:

1) 算法如下:

StringToSign:https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-forthe-Azure-storage-services

StringToSign 的生成是难点,每一个REST 接口都需要结合请求方法、URL 参数、请求参数来设置,详细内容请参考文档解释。

  1. StringToSign = VERB + "\n" +  
  2. Content-Encoding + "\n" +  
  3. Content-Language + "\n" +  
  4. Content-Length + "\n" +  
  5. Content-MD5 + "\n" +  
  6. Content-Type + "\n" +  
  7. Date + "\n" +  
  8. If-Modified-Since + "\n" +  
  9. If-Match + "\n" +  
  10. If-None-Match + "\n" +  
  11. If-Unmodified-Since + "\n" +  
  12. Range + "\n" +  
  13. CanonicalizedHeaders +  
  14. CanonicalizedResource; 

Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))

Authorization = SharedKey <storage account>:<Signature>

2) List Share 的StringToSign 为:

  1. StringToSign = "GET\n" +  
  2. "\n" +  
  3. "\n" +  
  4. "\n" +  
  5. "\n" +  
  6. "\n" +  
  7. "\n" +  
  8. "\n" +  
  9. "\n" +  
  10. "\n" +  
  11. "\n" +  
  12. "\n" +  
  13. +"x-ms-date:"+<x-ms-date>+ "\nx-ms-version:"+  
  14. <x-ms-version>+"\n"  
  15. +"/"+<storage account>+"/"+"\ncomp:list"; 

3) List Share 的Authorization 生成示例:

  1. SharedKey mystorageaccount:kCMF58AroVfIXthlSQIReMElWaD5luCd1RhemoeDdpw

Postman 测试,如图3.3.3-1 所示。

2. Create Share

接口文档:https://docs.microsoft.com/en-us/rest/api/storageservices/create-share

请求地址: https://mystorageaccount. file.core.chinacloudapi.cn /myshare?restype=share;

请求方法:PUT;

必要参数:Authorization、x-ms-date、x-ms-version。

x-ms-date:请求时间(UTC)。示例:Tue,01 Aug 2017 03:39:27 GMT;

x-ms-version:请求存储服务的版本。示例:2015-02-21;

Authorization:

1) 算法参考上文。

2) Create Share 的StringToSign 为:

  1. StringToSign = "PUT\n" +  
  2. "\n" +  
  3. "\n" +  
  4. "\n" +  
  5. "\n" +  
  6. "\n" +  
  7. "\n" +  
  8. "\n" +  
  9. "\n" +  
  10. "\n" +  
  11. "\n" +  
  12. "\n" +  
  13. +"x-ms-date:"+<x-ms-date>+ "\nx-ms-version:"+<x-ms-version> 
  14. +"\n"  
  15. +"/"+<storage account>+"/"+< myshare>+"\nrestype=share"; 

3) Create Share 的Authorization 生成示例:

  1. SharedKey mystorageaccount:Jcjej1+e3SzbBGvzRDevy+IQZHAoeFd031J5Mu04ubg

Postman 测试,如图3.3.3-2 所示。

存储其他服务,比如Blob、Queue 等REST 接口的调用与此类似,难点都在于Authorization 的生成,而Authorization 又非固定值,需要结合不同的请求接口来构建相应的签名字符串,再通过固定的算法来生成Authorization 参数值。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

游戏开发核心技术--剧本和角色创造

《游戏开发核心技术--剧本和角色创造》分“剧本”、“角色”和“游戏玩法”三部分,第一部分着重说明故事的历史、一般故事元素、传统故事设...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊