【问题标题】:Validate accept Headers in spring在春季验证接受标头
【发布时间】:2018-07-17 05:59:56
【问题描述】:

如果接受标头不是 application/json,我如何在 spring 中验证接受标头并返回自定义消息。目前我正在这样做(如下),但我想知道是否还有另一种方法?

我知道我可以创建自定义异常并根据出现的问题抛出异常,但有其他方法吗?

@GetMapping(value = "/get", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public ResponseEntity<String> get(final HttpEntity<String> httpEntity) {
    HttpHeaders responseHeaders = new HttpHeaders();
    String acceptString = httpEntity.getHeaders().getFirst("Accept");

    if (acceptString == null || acceptString.isEmpty()) {
        return new ResponseEntity<String>("empty accept header", HttpStatus.BAD_REQUEST);
    }

    if ((MediaType.APPLICATION_JSON_VALUE).equalsIgnoreCase(acceptString)) {
        responseHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
    }
    else {
        return new ResponseEntity<String>("Not valid accept value", HttpStatus.BAD_REQUEST);
    }

....

【问题讨论】:

    标签: java spring api http-headers


    【解决方案1】:

    在您的@Getmapping 中,您可以添加headers="Accept=application/json",这样您的方法将只处理具有该标头类型的调用。

    然后您可以添加一个方法来处理您的特定 AcceptHeader 方法忽略的所有调用。这样,您只需要一种方法来验证标头。

    您还可以编写自定义验证器并使用注释将其添加到您的方法中,如下所示: conditional validation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2017-01-27
      • 2010-12-15
      相关资源
      最近更新 更多