【问题标题】:Postman client not able to parse string response from JAX-RS response builderPostman 客户端无法解析来自 JAX-RS 响应构建器的字符串响应
【发布时间】:2016-06-24 19:12:45
【问题描述】:

我正在开发一个基于运动衫的 REST 应用程序,其中我正在使用响应构建器,如下所示:

return Response.status(Response.Status.UNAUTHORIZED).entity(e.getMessage()).build();

在邮递员中执行此 API 并生成此错误时,我看到如下内容:

这仅在漂亮格式模式下出现。是 Postman 客户端的问题还是 JAX-RS 的问题?

请求头和原始模式如下所示:

这里的“N”是消息字符串的第一个字符。 Raw & Preview 模式显示错误信息就好了。

【问题讨论】:

  • 你能显示请求头和响应体吗?
  • Raw 和 Preview 的输出是什么?
  • 在问题中添加...
  • 你能提供你的整个方法吗?你设置的消费类型是什么?
  • 邮递员检查响应头,如果它是application/json,它会尝试格式化它。在您的情况下,响应是纯文本,因此邮递员无法对其进行格式化。我猜在 JAX RS 资源类中你有类似 @Produces("text/plain)"

标签: java rest jax-rs postman


【解决方案1】:

由于您的 API 响应类型是 application/json,因此 Postman 尝试将其解析为 JSON,但解析失败,因为它只是一个错误消息字符串。

为了克服您需要在服务器端以某些 JSON 对象的形式返回错误。 像这样:

JsonObject error = ...;//some how created
error.addField("descr",e.getMessage());
return Response.status(Response.Status.UNAUTHORIZED).entity(error).build();

【讨论】:

  • 我认为它试图将其解析为 JSON,因为我的 API 响应类型是 application/json。如果你改变你的答案,我会接受:)。 postman 中指定的是请求类型。现在我想知道为什么当我说@produces 发送 JSON 时它会发送字符串。
  • 改写答案
猜你喜欢
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 2017-04-23
  • 2016-12-12
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
相关资源
最近更新 更多