一、RESTful接口与http协议状态表述
- RESTful风格API的好处
- API:Application Programming Interface 一组编程接口规范
- Representational State Transfer 表述性状态传递,决定了接口的形式与规则
- RESTful是基于http方法的API设计风格【约定大于配置】
- 看url知道要什么资源
- 看http method知道针对资源干什么
- 看http status code知道请求结果
RESTful API的设计风格
- 接口命名对比:
- 常见动词【使用负数名词、版本化接口】
- GET:获取、读取资源【不改变数据】
- POST:添加资源
- PUT:修改
- DELETE:删除
- RESTful风格接口文档:http://httpbin.org/
二、Spring常用注解及基础讲解
- 接口命名对比:
HTTP协议的传参方式 | HTTP协议组成 | 协议内容示例 | 对应Spring注解 | | —- | —- | —- | | path info传参 | /articles/12 (查询id为12的⽂
章,12是参数) | @PathVariable | | URL Query String传参 | /articles?id=12 | @RequestParam | | Body 传参 | Content-Type: multipart/form-
data | @RequestParam | | Body 传参 | Content-Type:
application/json,或其他⾃定义
格式 | @RequestBody | | Headers 传参 | | @RequestHeader |常用注解
- @RequestBody与@ResponseBody
- @RequestBody:修饰请求参数,注解用于接收HTTP的body,默认是使用JSON的格式
- @ResponseBody :修饰返回值
- @RequestMapping
- value:请求端点
- method:请求方式
- consumes:请求内容的数据类型
- params:请求参数值
- headers:指定请求头
- @RestController与@Controller
- 有模板页面用@controller
- 没有页面@Rescontroller
- @PathVariable 与@RequestParam
- @RequestBody可以使用嵌套的对象传参
- @RequestBody与@ResponseBody
统一规范接口
FastJSON
- SpringBoot默认是使⽤Jackson作为JSON数据格式处理的类库
- Gson
- Gson是Google为满⾜内部需求开发的JSON数据处理类库,其核⼼结构⾮常简
单,toJson与fromJson两个转换函数实现对象与JSON数据的转换
- Jackson
- Fastjson是阿⾥巴巴开源的JSON数据处理类库,其主要特点是序列化速度
快
数字,将其转换为包含Date类型、Integer等类型的对象。
- 序列化:
- 按照指定的格式、顺序等将实体类对象转换为JSON字符串
常用注解
- @JsonPropertyOrder(value={“pname1”,”pname2”}) 改变子属性在JSON序列化中的默认定义的顺序
- @JsonIgnore 加在属性上面,排除某个属性不做序列化与反序列化
- @JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略JSON字符串中存在,但实体类不存在的属性,不予赋值,也不会出现异常。
- @JsonIgnoreProperties({ “xxx”, “yyyy” }) 忽略某些属性不进⾏序列化
- @JsonProperty(anotherName) 为某个属性换⼀个名称,体现在JSON数据里面
- @JsonInclude(JsonInclude.Include.NON_NULL) 排除为空的元素不做序列化反序列化
- @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”) 指定日期类型的属性格式
五、使用Mockito编码完成接口测试
MockMvc对象有以下几个基本的方法:
- perform : 模拟执行⼀个RequestBuilder构建的HTTP请求,会执行SpringMVC的流程并映射到相应的控制器Controller执行。
- contentType:发送请求内容的序列化的格式,”application/json”表示JSON数据格式
- andExpect: 添加RequsetMatcher验证规则,验证控制器执行完成后结果是否正确,或者说是结果是否与我们期望(Expect)的⼀致。
- andDo: 添加ResultHandler结果处理器,比如调试时打印结果到控制台
- andReturn: 最后返回相应的MvcResult,然后进行自定义验证/进行下⼀步的异步处理
- @SpringBootTest 注解
- 是⽤来创建Spring的上下⽂ApplicationContext,保证测试在上下⽂环境⾥运⾏。单独使用@SpringBootTest不会启动servlet容器。所以只是使⽤SpringBootTest 注解,不可以使用@Resource和@Autowired等注解进⾏bean的依赖注入(准确的说是可以使用,但被注解的bean为null)。
@ExtendWith(@RunWith注解)
OpenAPI是规范的正式名称。规范的开发⼯作于2015年启动,当时SmartBear(负责Swagger⼯具开发的公司)将Swagger 2.0规范捐赠给了Open API Initiative,该协会由来⾃技术领域不同领域的30多个组织组成。此后,该规范被重命名为OpenAPI规范。
- Swagger
- 是⼀个 API⽂档维护组织,后来成为了 Open API 标准的主要定义者。现在最新的版本为17年发布的 Swagger3(Open Api3)。
- 是⼀个Open API规范实现⼯具包,由于Swagger⼯具是由参与创建原始Swagger规范的团队开发的,因此通常仍将这些⼯具视为该规范的代名词。⽬前可以认为Swagger3就是 Open API 3.0。