【问题标题】:How to return Array of two JSON Object in Jersey RESTFul API(JAX-RS)如何在 Jersey RESTFul API(JAX-RS)中返回两个 JSON 对象的数组
【发布时间】:2017-05-08 21:02:44
【问题描述】:

我使用 jersey 在 RESTFul API 中设计了登录模块。

每当登录时发生任何错误,它都会返回错误代码和消息,例如,

{
  "errorFlag": 1,
  "errorMessage": "Login Failed"
} 

但每当我获得成功的结果时,它就会返回

{
  "apiKey": "3942328b-fa65-496c-bf32-910aafbc1b0e",
  "email": "caXXXX@gmail.inl",
  "name": "Chandrakant"
}

我正在寻找如下结果

    {
          "errorFlag": 0,
          "errorMessage":{
          "apiKey": "3942328b-fa65-496c-bf32-910aafbc1b0e",
          "email": "caXXXX@gmail.inl",
          "name": "Chandrakant"}
 }

【问题讨论】:

  • 我真的不明白在名为“errorMessage”的字段中除了错误消息之外还有其他内容的意义,但无论如何,您的问题是什么?是什么阻止你这样做?如果身份验证失败,您不知道用户是谁,您打算如何存储 API 密钥和用户名?
  • 查看更新的问题,客户端应用程序将检查标志是 1 还是 0
  • 我仍然不明白在名为“errorMessage”的字段中除了错误消息之外还有其他内容的意义。而且您还没有说出您的问题是什么,以及是什么阻止了您这样做。但是你为什么要这样做呢?客户端应该已经知道这是成功的,因为您发回了一个状态为 2xx 的响应(通常为 200 - OK)。它应该知道这是一个错误,因为您发回了一个带有错误状态的响应(这里应该是 401)。这是标准的 HTTP 做事方式,所有客户端 HTTP 库都依赖于这些标准方式。

标签: java json rest jersey-2.0 restful-authentication


【解决方案1】:

使用如下结构,

{
  status/statusCode :  200/400, //eg. 200 for success, any other for failure.
  statusMessage : "Success/<failureMessage>",
  errorDetails : "Failed due to <reason>"   //optional
  data :{    //data will exists only in case of success call.
  }
}

你可以像下面这样实现,

@GET
@Path("/images/{image}")
@Produces("image/*")
public Response getImage(@PathParam("image") String image) {
  File f = new File(image);
 
  if (!f.exists()) {
    throw new WebApplicationException(404);
  }
 
  String mt = new MimetypesFileTypeMap().getContentType(f);
  return Response.ok(f, mt).build();
}

【讨论】:

  • 这是有道理的,但是我怎样才能做到这一点,任何代码示例
  • 使用上面的类Response类,浏览文档,你会发现如何构建自己的响应..
【解决方案2】:

您可以将 HashMap 中的所有属性作为键值返回。 下面的代码对我有用

@POST @Path("/test") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) 公共HashMap检查(InputStream inputJsonObj){ HashMap map = new HashMap(); map.put("key1", "value1"); 返回地图;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 2019-04-30
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多