场景描述
开发了一个Post
类型的接口,在本地用postman
测试是没有问题。前端调用返回415 UNSUPPORTED_MEDIA_TYPE
。而415 Unsupported Media Type
是一种HTTP 协议的错误状态代码,表示服务器由于不支持其有效载荷的格式,从而拒绝接受客户端的请求后面定位问题发现,后端接口请求参数使用@RequestBody
注解,该注解要求请求体的类型是application/json
。前端的请求体类型是application/x-www-from-urlencoded
。发送的请求体类型与后端要求的不一致导致报错。
请求体有哪些类型?
我们从postman
工具上可以看到多种请求体类型,下面对常用的请求体进行相关说明
表单数据
例子
POST /api/formdata HTTP/1.1
Content-Type: application/x-www-form-urlencoded
username=johndoe&password=pass123
SpringBoot注解接收参数
@PostMapping("/api/formdata")
public String handleFormData(@RequestParam String username, @RequestParam String password) {
// 处理请求
}
// 如果想接收所有表单参数,即封装成一个实体类,可以采取@ModelAttribute
@PostMapping("/api/submitForm")
public String handleFormSubmission(@ModelAttribute YourRequestObject requestObject) {
// 处理请求
// requestObject 将包含所有请求参数的值
return "successPage";
}
JSON数据
例子
POST /api/jsondata HTTP/1.1
Content-Type: application/json
{
"username": "johndoe",
"password": "pass123"
}
Spring Boot注解
@PostMapping("/api/jsondata")
public String handleJsonData(@RequestBody User user) {
// 处理请求
}
XML数据
例子
POST /api/xmldata HTTP/1.1
Content-Type: application/xml
<user>
<username>johndoe</username>
<password>pass123</password>
</user>
Spring Boot注解
@PostMapping("/api/xmldata")
public String handleXmlData(@RequestBody User user) {
// 处理请求
}
文件上传
例子
POST /api/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=--------------------------123456789012345678901234
(multipart data)
Spring Boot注解
@PostMapping("/api/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 处理文件上传
}
标签:HTTP,请求,UNSUPPORTED,415,api,报错,Type,public,String
From: https://www.cnblogs.com/hello-czf/p/17929546.html