在jax-rs Respone中设置状态代码和数据的正确方法是什么?

时间:2020-05-18 08:31:15

标签: jax-rs

问题1

能否请您告诉我以下哪个代码合适? 两种代码之间有什么区别吗?

问题2

可以将Response.status (int status)与其他状态代码(例如201)一起使用吗? 专用于每个状态码的方法(例如Response.created (URI location)代表201)是否有区别?

下面是示例代码。

案例1

Response.ok(jsonText).build();

案例2

Response.status(Response.Status.OK).entity(jsonText).build();

1 个答案:

答案 0 :(得分:0)

没有区别。看一下实现,您可以使用以下方法:

.Net 4.7.2
public static ResponseBuilder ok(Object entity) {
    ResponseBuilder b = ok();
    b.entity(entity);
    return b;
}

您可以将其简化为

public static ResponseBuilder ok() {
    return status(Status.OK);
}

就像

public static ResponseBuilder ok(Object entity) {
    ResponseBuilder b = status(Status.OK);
    b.entity(entity);
    return b;
}

public static ResponseBuilder ok(Object entity) { return status(Status.OK).entity(entity); } 实际上是Status.OK,所以Response.Status.OKok(entity)相同。

可以将Response.status(int状态)与其他状态代码(例如201)一起使用吗?

绝对。

专用于每个状态代码的方法(例如201的Response.created(URI位置))是否有所不同?

像上面的示例一样,在方法实现中进行查看,您将看到是否存在任何差异或其他步骤。