1.RFC 7807
之前的项目如果出现异常,默认跳转到error页面。或者是抛出500 异常。
但是对于前后端分离的项目,Java程序员不负责页面跳转,只需要 把错误信息交给前端程序员处理即可。而RFC 7807规范就是将异常 信息转为JSON格式的数据。这个JSON数据包含五个部分
- type: 问题描述文档地址,如果不存在,则"about:blank"
- title: 简短的描述问题
- status: http 状态码,比如400、401、500等
- detail: 详细说明发生问题的原因
- instance: 问题发生的URL地址
{
"type": "about:blank",
"title": "Method Not Allowed",
"status": 405,
"detail": "Method 'POST' is not supported.",
"instance": "/t1"
}
前端程序员拿到这串JSON数据进行处理就可以了。
2.ProblemDetails
接下来我们就使用ProblemDetails处理异常,请求方式异常也属于 ProblemDetails处理的异常,我们就模拟改异常的发生。
ProblemDetails默认是不开启的,要想开启需要进行如下配置:
spring.mvc.problemdetails.enabled=true
package spring.springlogback.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@SuppressWarnings("all")
public class ProblemDetailsController {
@GetMapping("/t1")
@ResponseBody
public String t1(){
return "hello";
}
}
用POST方式访问该方法: