想象一下REST后端点,例如:
@POST
@Path("/cbo/{param1}/{param2}")
public Response updateCbo() {
//do something
return Response.status(Response.Status.OK).build();
}
我的问题是:如果一切顺利,最好是返回OK响应还是默认为默认?我看到GET查询通常不会打扰返回响应,只返回请求的内容,而Web客户端确实会获取200 OK
标题。
感谢。
答案 0 :(得分:3)
您根本不必返回响应,假设您有一个POST
(或任何其他函数)类型调用,在响应请求中您要返回一个String(或任何对象)如果你使用像杰克逊这样的序列化器那就重要了)
你可以这样做:
@POST
@Path("/cbo/{param1}/{param2}")
public String updateCbo() {
//do something
return "My Response"
}
泽西岛将自动返回200。如果将该函数设置为void,则Jersey将自动返回204(成功 - 无内容)。
如果您希望呼叫失败,您可以提出异常。
答案 1 :(得分:3)
当POST到创建新资源时,普遍接受的是发送回201 Created状态,Location
标头设置新资源的URI。您可以在this post中看到一个完成此操作的示例。
如果你只是更新一个资源,而不是POST,通常是用PUT完成的,那么通常的方法是在成功时发送204 No Content而不是201。实施例
@PUT
@Path("/cbo/{param1}/{param2}")
public Response updateCbo(Model updated,
@PathParam("param1") String param1,
@PathParam("param2") String param2) {
Model model = modelServive.lookup(param1, param2);
if (model == null)
return Response.notFound().build();
model = PropTranferUtils.transfer(model, updated);
modelService.update(model);
return Response.noContent().build();
}