java - 有没有办法清除 Spring Boot RestController 中的 "consumes = MediaType"?

标签 java spring spring-boot

假设我有一个具有各种端点(GET/POST/PUT/DELETE)的 Controller ,通常它们都会生成和使用 JSON,所以我这样做:

@RestController
@RequestMapping(value=["/some/base/path"], produces = [MediaType.APPLICATION_JSON_UTF8_VALUE], consumes = [MediaType.APPLICATION_JSON_UTF8_VALUE])
public class SomeController {
    ...
}

但事实证明,我的 @GetMapping 不使用 JSON(并且我不想强制调用者为 GET 请求设置 Content-Type: application/json 。在 @GetMapping 上,有没有办法清除/清空在类级别设置的 consumes = 值?或者是否有其他方法可以避免重复 consumes 属性类中的所有方法?

我已经尝试设置 @GetMapping(value=["/some/path"], Consumers = []) 但没有任何运气。对于上下文,我正在从 Jersey 注释转换为 Spring REST Controller 样式注释,我发现这是行为上令人烦恼的差异(设置类级 @Consumes 注释不会针对 @GET 强制执行)。只是寻找一种优雅的方式来反射(reflect)现有行为,而无需在各处克隆 Consumers 属性。

最佳答案

我现在遇到了您的问题。尝试使用以下解决方案并引用此链接可能会有所帮助

https://github.com/spring-projects/spring-framework/pull/1257/commits/00e6ca412dffeb8a7a596f9312db19eb6cc49525

    @GetMapping(value = "/get", consumes = MediaType.ALL_VALUE)

关于java - 有没有办法清除 Spring Boot RestController 中的 "consumes = MediaType"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604665/

相关文章:

java - Hibernate 和 MySQL 管道破裂

java - 仅在运行 java -jar 时循环依赖,不使用 spring-boot :run

java - 在 Java 构造函数中始终克隆引用类型是一个好习惯吗?

java - 如何使用今天的日期传入文件名值属性

java - 在 HashSet 迭代上动态创建 javafx 按钮。如何为每个按钮创建单独的actionEvent?

java - Libgdx:创建其他对象的对象

java - 如何在 Spring Cloud Contract stub 上执行 WireMock.verify() 操作?

java - 使用 Spring MVC 的可配置 Comet servlet

java - 使用 JPA 无法获取自动生成的 ID

sql - JPA batch_size 属性不适用于 native 查询