Java 尝试使用封装的http响应代码构建REST服务

Java 尝试使用封装的http响应代码构建REST服务,java,jax-rs,java-ee-5,Java,Jax Rs,Java Ee 5,我目前正在尝试使用Java/EE(5)构建一个REST Web服务,该服务完全封装http响应,因此每个请求都应该返回响应代码200(OK),如下所示: { "msg" : { // imagine some datastructure here }, "error" : { "code" : 200 // http response code "status" : "OK" // some string defining this

我目前正在尝试使用Java/EE(5)构建一个REST Web服务,该服务完全封装http响应,因此每个请求都应该返回响应代码200(OK),如下所示:

{   
    "msg" : { // imagine some datastructure here },
    "error" : {
        "code" : 200 // http response code
        "status" : "OK" // some string defining this
    }
}

我喜欢的框架是JAX-RS(我们计划很快迁移到EE6,因此迁移是开发此框架时的主题之一),但JAX-RS可以做到这一点吗?

使用JAX-RS始终返回
200 OK
内容类型:应用程序/json
的最简单方法:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("/not-rest")
@Produces("application/json")
public class NotRestBean {

    @GET
    public Response getSoapStyle() {
        String json = "{}"; // build your response here
        return Response.ok(json).build();
    }
}

同样,我不建议这样做。REST的中心部分是统一接口,其中包括正确的响应代码。

这不是REST。“你为什么又想做肥皂剧?我很困惑,@LutzHorn。”。您在哪里看到SOAP?不要在结果中嵌入错误代码,而是将其作为HTTP头发送。@在SOAP中,服务始终返回
200 OK
。请求的实际结果嵌入到响应主体中。这就是你计划要做的。那不是休息,是的。您可以使用JAX-RS将响应代码、头和主体设置为您想要的内容,尽管我不推荐这样做。