发表于: 2020-08-10 23:29:57
1 2366
今天完成的事情:
1. 回顾任务一、二、三
收获
1. 索引
在 MySQL 中有多个数据库引擎,通常我们使用的是 InnoDB。
在 InnoDB 中有聚合索引与非聚合索引之分,但是在 MyISAM 中所有的都是非聚合索引。
所以在 InnoDB 数据库引擎下如果没有按照主键顺序插入数据或者更改数据的主键会付出较大的代价,但在其他的数据库引擎下就不一定有这回事了。
2. 接口文档的规范
这个只在做任务二的时候写过,之后的任务我是使用了一些 Api 文档工具。
在 restful 接口规范中,使用 post、delete、(patch/put)、get 来对应增删改查操作。
路径用来描述资源类型。
资源路径的描述中
GET /zoo/{ID}/animals
GET /animals?zoo_id=ID
这两种描述方式都是可以的,在语义上这两种描述方式都是清晰易懂的,也允许有一定的设计冗余同时存在。
如果一个接口可能会得到很多的数据,那么我们需要提供 api 参数对数据过滤。
- ?limit=10:指定返回记录的数量
- ?offset=10:指定返回记录的开始位置。
- ?page=2&per_page=100:指定第几页,以及每页的记录数。
- ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
- ?animal_type_id=1:指定筛选条件
状态码
之前我做这个步骤是在返回的 json 数据中加一个 code 字段。实际上 SpringMVC 中我们是可以自定义返回的状态码的。
* 使用 ResponseEntity 类
@RequestMapping(value = "/controller", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity sendViaResponseEntity() {
return new ResponseEntity(HttpStatus.NOT_ACCEPTABLE);
}
* 在异常类上使用 @ResponseStatus 注解
控制器
@RequestMapping(value = "/exception", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity sendViaException() {
throw new ForbiddenException();
}
自定义异常类
@ResponseStatus(HttpStatus.FORBIDDEN)
public class ForbiddenException extends RuntimeException {}
使用spring ResponseEntity处理http响应
https://blog.csdn.net/neweastsun/article/details/81142870#comments
明天的计划
1. 回顾任务四、五
评论