【问题标题】:Spring 5 consume multiple MediaTypeSpring 5 消耗多个 MediaType
【发布时间】:2017-11-30 23:10:43
【问题描述】:

我正在使用 Spring Boot 1.5.8.RELEASE 我有一个端点并且想使用多个 MediaType。 特别是 application/x-www-form-urlencodedapplication/json 类型。 目前我有以下代码。它适用于application/x-www-form-urlencoded,但不适用于application/json

@RequestMapping(path = "/abc", method = RequestMethod.POST,
                    consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_FORM_URLENCODED_VALUE},
                    produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(value = HttpStatus.OK)
    public ResponseEntity<MyResponse> validate(@Valid @ModelAttribute MyDetails details) {
        return something();
    }

我尝试在我的配置中添加内容协商器,但仍然无法正常工作。

    @Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
            configurer.favorPathExtension(false)
                      .defaultContentType(MediaType.APPLICATION_JSON)
                      .mediaType("x-www-form-urlencoded", MediaType.APPLICATION_FORM_URLENCODED);
        }

如何让端点接受这两种媒体类型?

【问题讨论】:

    标签: java spring rest


    【解决方案1】:

    将 {} 交换为 [] 以获取消耗
    试试看:

    consumes = [MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_FORM_URLENCODED_VALUE], 
    

    参考:Spring RequestMapping - Baeldung

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2020-01-06
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      相关资源
      最近更新 更多