【问题标题】:Convert String error response to Http Status code将字符串错误响应转换为 Http 状态码
【发布时间】:2017-10-31 18:50:01
【问题描述】:

在我使用的 Java+Spring 应用程序中,来自第三方调用 RestTemplate ,我们在 JSON 中得到错误响应,响应代码为 200。

例如

{
    "errors": [{
        "reason": "did not like the request",
        "error": "BAD_REQUEST"
    }]
}

如何将BAD_REQUEST 转换为 400 整数表示。 Apache HttpStatus inte 似乎没有提供任何接口来执行此操作。

【问题讨论】:

  • 那么您的服务器使用该内容回复 HTTP 状态 200?
  • 是的,它的另一方服务器响应,所以我无法更改它。
  • 询问他们所有可能的错误,并创建您自己的标准状态代码映射。
  • @JBNizet 没有库可以将字符串响应文本转换为 int?
  • 这样的库如何知道第三方选择了哪些字符串,以及它们应该映射到哪个状态码?这些字符串不是标准的。

标签: java spring httpclient


【解决方案1】:

也许你可以使用org.springframework.http.HttpStatus:

String error = "BAD_REQUEST";
HttpStatus httpStatus = HttpStatus.valueOf(error);
int errorIntCode = httpStatus.value();

或更安全:

String error = "BAD_REQUEST";
HttpStatus httpStatus = Arrays.stream(HttpStatus.values())
        .filter(status -> status.name().equals(error))
        .findAny()
        .orElse(HttpStatus.INTERNAL_SERVER_ERROR);
int errorIntCode = httpStatus.value();

【讨论】:

  • 太棒了!谢谢
【解决方案2】:

更简洁更简短

HttpStatus.OK.value();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2020-04-17
    • 2015-10-08
    • 1970-01-01
    • 2021-06-01
    • 2012-10-14
    • 1970-01-01
    相关资源
    最近更新 更多