如何解决 Spring 中 DELETE 请求的错误消息“status”:415,“error”:“Unsupported Media Type”?

Posted

技术标签:

【中文标题】如何解决 Spring 中 DELETE 请求的错误消息“status”:415,“error”:“Unsupported Media Type”?【英文标题】:How to solve error message "status": 415, "error": "Unsupported Media Type"," for DELETE request in Spring? 【发布时间】:2018-08-05 12:34:05 【问题描述】:

我基于Service Components using this tutorial.创建了一个Spring Boot应用

我的删除请求是这样构造的:

   @RequestMapping(value = "/api/greetings/id", method = RequestMethod.DELETE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Greeting> deleteGreeting(@PathVariable("id") Long id, @RequestBody Greeting greeting) 


    greetingService.delete(id);

    return new ResponseEntity<Greeting>(HttpStatus.NO_CONTENT);
    

所有其他请求最终都可以正常工作,但是如果我在 Postman 中发出 DELETE 请求,则会收到以下错误:

   
"timestamp": 1519060345434,
"status": 415,
"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 'application/x-www-form-urlencoded' not supported",
"path": "/api/greetings/2"

我检查了以下问题,没有任何帮助(难怪,它们都没有发出 DELETE 请求:

415 Unsupported MediaType

415 Unsupported MediaType for POST request in spring application

415 Unsupported Media Type in RESTful webservice Ask

【问题讨论】:

您可以使用@RestController,如果您制作一些api,并为您的删除功能使用@DeleteMapping注释。 【参考方案1】:

您的控制器期望 application/json 作为内容类型,但显示错误消息

"message": "Content type 'application/x-www-form-urlencoded' not supported",

你应该将 postman 中的 header 更改为 content-type application/json

【讨论】:

以上是关于如何解决 Spring 中 DELETE 请求的错误消息“status”:415,“error”:“Unsupported Media Type”?的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 2.0 之后发送delete,put请求问题

Spring Cloud Gateway 动态修改请求参数解决 # URL 编码错误传参问题

Spring Boot + Spring Security 应用程序中 POST/PUT/DELETE 请求的 403 响应

Spring REST

Spring REST

Delete 和 Put 请求失效, Spring 框架