为什么有必要将一个Response对象而不是String对象返回给java中的http请求?
发布时间:2020-05-25 14:46:07 所属栏目:Java 来源:互联网
导读:我定义了我的REST方法,以返回String数据类型作为对http请求的响应.就是这个: @Path(/users/{name}/) @GET @Produces(application/json) public String getAllUserMemberships(@PathParam(name) String name) throws Exception
|
我定义了我的REST方法,以返回String数据类型作为对http请求的响应.就是这个: @Path("/users/{name}/")
@GET
@Produces("application/json")
public String getAllUserMemberships(@PathParam("name") String name) throws Exception{
String doc = "{"name":""+name+"","message":"Logged in"}";
return doc;
}
它工作正常,但有人告诉我宁愿返回一个javax.ws.rs.core.Response对象,如下面的示例代码所示.这也很好,他说这是响应HTTP请求的最佳方式但他不知道为什么. @Path("/users/{name}/")
@GET
@Produces("application/json")
public Response getAllUserMemberships(@PathParam("name") String name) throws Exception{
String doc = "{"name":""+name+"","message":"Logged in"}";
return Response.ok(doc,MediaType.APPLICATION_JSON).build();
}
我的问题是:当你可以返回一个String时,是否有必要将Response对象返回给HTTP请求.如果有必要,请告诉我为什么因为对于HTTP请求而言哪一个是正确的. 解决方法如果返回一个简单的String,则无法控制出错的情况.但是,如果您返回Response对象,则可以返回正确的500错误并显示错误消息: try {
return Response.ok(successResult).build();
} catch(Exception ex) {
return Response.serverError().entity(fault).build();
//or
return Response.status(500).entity(fault).build();
}
正如其他人所说,它可以让你控制HTTP响应的其他方面,比如设置一些有用的标题: Response response = Response.ok(successResult);
response.getHeaders().put("Access-Control-Allow-Origin","*");
response.getHeaders().put("Access-Control-Allow-Headers","origin,content-type,accept,authorization");
response.getHeaders().put("Access-Control-Allow-Credentials","true");
response.getHeaders().put("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS,HEAD");
另外发送一个文件要容易得多: File fileToSend = getFile(); return Response.ok(fileToSend,"application/zip").build(); 所以有很多原因,如果你不想做任何特别的事情,那么如果你想修改HTTP响应属性,只需返回对象就足够了,那么你必须使用Response. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
