RESTFul API在Spring boot项目中的应用笔记
定义描述URL的注解
请求
@RequestMapping()
@Get/Post/Put/DeleteMapping
参数
@RequestParam
@PagebleDefault
@PathVariable
@RequestAttribute
@RequestBody
验证
@NotBlank @Valid
响应
@JsonView
@ResponseBody
时间统一返回时间戳
异常处理
ExceptionTranslationFilter处理restcontroller里的异常
@ControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(UserNotExistException.class)
@ResponseBody
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public Map<String, Object> handleUserNotExistException(UserNotExistException ex){
Map<String, Object> result = new HashMap<>();
result.put("id", ex.getId());
result.put("message", ex.getMessage());
return result;
}
}
使用Filter和Interceptor拦截rest服务
FIlter
可以已@Component的形式发布,也可以在WebConfig中配置到FilterRegistrationBean中
但是Filter的缺陷在于它只能拿到request中的数据,不能知道这个请求是哪个Controller处理的
Inteceptor
HandlerInterceptor可以拿到controller信息,对应的method信息,但是没法拿到方法参数真正的值,这时因为在spring的dispatcherServlet中prehandle没有处理请求数据,而是在之后的代码里做的,这时需要记录参数的信息就只能用Aspect了
preHandle 在Controller之前
postHandle 在Controller之后,如果没有异常的话
afterCompletion 在Controller之后
interceptor不仅仅拦截我们的请求,spring自己发的也会被拦截
Aspect
可以获得到参数
Exception冒泡的过程
Controller > Aspect > ControllerAdvice > Interceptor -> Filter --> tomcat
文件的上传和下载
MultipartFile InputStream OutputStream
Swagger
@ApiOperation
@ApiModelProperty
@ApiParam
WireMock,YAPI
模拟api服务器
上一篇: 打印出所有的“水仙花数”
下一篇: display:table的应用笔记