理解RESTful架构和通用异常处理

请求规范:

url 应该只代表资源的位置,所以不应该含有具体操作,他的具体表现形式,应该在HTTP协议请求头用Accept和Content-type指定

因为Http是无状态的,所有的状态都保存在服务端,所以用户想要操作服务器端的状态,要通过HTTP协议中四个动词

 响应规范:

严格按照状态码

另外一点:浏览器路径默认是get方式,当服务端不对应的方式接收时会报405。

关于HTTP请求行、请求头、请求体详解链接https://blog.csdn.net/u010256388/article/details/68491509

 springMVC中ResponseBody作用就是将对象序列化放到响应体里,默认是JSON串,取决于消息转换器

springMVC提供一个包含请求头请求行和请求体的实体类ResponseEntity<T>

所以:一个标准Restful请求响应

如果不指定响应码。默认返回200

异常处理:一般把状态码和友好提示返回前端

但是上图中返回前端为空,因为body里为null,而且只能指定类型为ResponseEntity里的泛型Item,不能为String或其他类型

 

这样抛异常有提示,但是状态码写死了永远都是500

所以要用通用异常处理:思想就是aop拦截Controller所有异常,返回相应的异常信息

springMVC中提供了一个注解@ControllerAdivice可以拦截Controllar中的内容

这样就可以拦截不同的异常信息 返回相应的状态码和响应体

但是这样对于返回结果不够丰富,可以让返回结果是从对象里提取的异常信息

 但是异常信息终究是从异常里提取的,所以自定义异常

异常信息固定且复杂,定义为枚举

 自定义异常

 

Controller抛自定义异常

创建一个结果集类

 

最后的切面 从结果集取数据

 

猜你喜欢

转载自blog.csdn.net/weixin_42295717/article/details/85272773
今日推荐