有没有一种方法可以在Spring Boot RestController中清除消耗MediaType?

时间:2018-07-31 02:32:24

标签: java spring spring-boot

假设我有一个控制器,该控制器具有各种终结点(GET / POST / PUT / DELETE),并且通常它们都产生和使用JSON,所以我这样做:

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

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

我已经尝试设置@GetMapping(value=["/some/path"], consumes = []),但没有任何运气。对于上下文,我正在从Jersey注释转换为spring rest控制器样式注释,并且发现这是行为上的烦人差异(设置类级别@Consumes注释不会针对{{1 }} s。而且,只是在寻找一种优雅的方式来反映现有行为,而无需在整个位置都克隆消费属性。

2 个答案:

答案 0 :(得分:0)

对于您的情况,您需要删除消耗部分。我的意思是只使用农产品。例如:

 @GET
    @Produces("application/json")
    @Path("/{oid}")
    public Book getBook(@PathParam("oid") String oid) {
        return bookService.getBook(oid);
    }

或检查以下网址: https://dzone.com/articles/spring-boot-building-restful-web-services-with-jersey

答案 1 :(得分:0)

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

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

<Example iconName = 'IconHome' color = 'Focused'/>