欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RESTFul API在Spring boot项目中的应用笔记

程序员文章站 2022-07-13 23:44:52
...

定义描述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服务器

相关标签: 笔记