按下面两个步骤排查即可
步骤1.检查前端的http请求httpMethod是否和后端设置的一致
主要检查浏览器F12查看header 的request method和项目swagger接口的请求方式是否一致,如下两张截图。如果不一致时前端或者后端改为一致。
附前端项目截图
步骤2.前端请求方式和swagger接口的请求方式一致,则排查的后端接口的设置
步骤1排查没有发现问题那么问题出在后端,即swagger注解在接口上的请求方式和接口的真实请求方式注解不一致。
请求方式后端有两个注解方式,@RequestMapping注解方式是value设置路径和method设置请求方式,如@RequestMapping(value="/test",method=RequestMethod.POST)
另外一种是请求方式的专属注解,如post请求是@PostMapping("/test"),get请求是@GetMapping("/test"),put请求是@PutMapping("/test")
讲完两种注解方式,我们来说下为什么前端请求方式和swagger接口的请求方式一致但是请求后端提示Request method 'XXX' not supported的原因
swagger显示的请求方式是@ApiOperation注解映射出来的,如果@ApiOperation注解上的请求方式写错了,那前端开发看swagger对接的接口请求方式就是是错的了。所以后端开发接口时一定要注意swagger注解@ApiOperation上的httpMethod要和接口请求方式注解一致,如下图
@PutMapping("/test") @ApiOperation(value = "测试接口", notes = "接口 Content-Type使用application/json", httpMethod = "PUT")
附:Request Method 即http的请求方式
主要包括以下几种:
- GET:用于请求指定的页面信息,并返回实体主体。
- HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头信息。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT:从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE:请求服务器删除指定的页面。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器,通常用于SSL加密服务器的链接。
- OPTIONS:允许客户端查看服务器的性能。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。