请求规范:
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抛自定义异常
创建一个结果集类
最后的切面 从结果集取数据