说明:本文内容来自浙江科技学院软件工程本科专业课程《系统集成与优化》的课堂实验报告。
实验目的(来自实验任务书):了解OpenAPI、Web Service、云函数等开放服务的基本概念,针对具体的开放服务接口及其文档/SDK,能够分析了解该服务的开放类型、使用方式,掌握通过代码将开放服务提供的功能接入融合到自己的项目中的技能。能够通过研究开放服务接口,进行项目功能开发。
实验日期:2021-06-09
文章标签逻辑如下图所示。
零、基础知识:开放服务简述(TODO)
开放服务 | 开放类型 | 使用方式简述 |
---|---|---|
OpenAPI | ||
Web Service | ||
云函数 |
一、Open API实验之对象存储
- 准备工作
(1)登录阿里云,进入OSS管理控制台,开通对象存储服务OSS(Object Storage Service)。
(2)进入存储试用中心。个人用户可免费试用3个月的20GB存储包,点击“立即试用”即可。
(3)创建Bucket(存储空间),读写权限选择“私有”。
(4)通过示例工程快速入门Java SDK
。
下载OSS Java SDK
的Maven
示例工程aliyun-oss-java-sdk-demo-mvn.zip
,解压后导入IDEA
。
(5)进入控制台的“安全信息管理”页面,新建AccessKey
,获得AccessKeyId
和AccessKeySecret
。
(6)将示例工程的HelloOSS.java
中的accessKeyId
、accessKeySecret
、bucketName
修改为自己的信息。编译运行示例工程。
- 基于Spring Boot的OSS管理工具
(1)新建Spring Boot项目,添加Spring Web
依赖。
(2)在pom
中添加阿里云和thymleaf
(页面)依赖。
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
(3)新建类OssUtil
,封装用到的阿里云OSS SDK功能(复制示例工程的HelloOSS.java
的代码,将main
方法中的示例代码抽离为方法)
①鉴权数据:endpoint、bucketName、accessKeyId、accessKeySecret。
②OssClient
对象: OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
③获取文件上传token
④文件上传:ossClient.putObject(String bucketName, String fileKey, File file);
⑤列举文件
ObjectListing objectListing = ossClient.listObjects(bucketName);
List<OSSObjectSummary> objectSummary = objectListing.getObjectSummaries();
⑥删除文件:ossClient.deleteObject(bucketName, fileKey);
(4)配置项目的application.properties
:①thymleaf
②Servlet
文件上传
(5)在resources/templates
下新建两个文件upload.html
和list.html
。
(6)新建controller
包,添加OssController
类,添加请求处理方法。
(7)编译运行,用浏览器测试。
①查看照片列表。
②删除其中的一张照片。
③上传一张照片。
登录阿里云OSS控制台,可下载上传的照片。
二、Web Service实验
- 选择要使用的Web Service,阅读说明,了解输入输出,进行在线测试。
- 下载WSDL
在选定的Web Service的说明页面的路径(通常以.asmx
结尾)后加上?wsdl
(如http://www.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl),用浏览器访问。得到的页面应是一个XML文档。按F12打开开发人员工具,切换到“网络”选项卡,刷新页面。在请求的资源列表中单击文档类型的资源,在“响应”选项卡中查看其内容。右键单击资源>另存为…
,将文档保存为air.wsdl
。
- 搭建Spring Boot项目
新建空白Spring Boot项目,添加Web Service客户端、fastjson、dom4j、commons-lang依赖。 - 开发测试Web服务
(1)将air.wsdl
复制到resources
目录下。打开文件,删除带有<s:element ref="s:schema" />
的行(共3行)。
(2)通过jax
客户端调用Web服务,分析返回结果的结构。
如下图所示,返回结果以[{"any":"
开始,以"}]
结束。两者之间是一个XML文档。XML根元素的子元素是<diffgr:diffgram…/>
元素,它的xmlns
属性值为http://WebXml.com.cn
。<diffgr:diffgram…/>
的子元素是<Airlines.../>
元素,它的xmlns
属性值为空。<Airlines.../>
有多个<AirlinesTime.../>
子元素,每个子元素对应一条航线信息。
(3)提取结果XML,通过dom4j
解析
5. 将Web服务的数据封装成自己的API接口
(1)添加controller
包,新建AirController
类。添加dto
包,新建AirDto
类。
(2)AirController
中增加方法List<AirDto> airSearch(String from,String to,String date)
,将查询封装成Web接口。
(3)编译运行应用,浏览器访问以下网址进行测试:http://localhost:8080/airSearch?from=杭州&to=乌鲁木齐&date=2021-06-17。
三、实验心得体会
- 对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。
AccessKey ID
和AccessKey Secret
是用户访问阿里云API的密钥,具有该账户完全的权限。通常建议使用RAM
子用户AccessKey
。- 阿里云OSS客户端有两种配置方式:第一种是只配置主账号或者子账号的
access key id, access key secret
;第二种是配置access key id, access key secret和token
三个值,这三个值都是服务端通过oss_media_get_token
或者oss_media_get_token_from_policy
获取的临时AccessKey和token
,该AccessKey和token
有时间期限,超过有效期后,不能再次使用。 .asmx
文件和.aspx
文件都是文本文件。它包含在前者包含在之中,是ASP.NET
应用程序的一部分。WSDL
描述了服务的访问方式、需要返回的相应的类型。