【问题标题】:Trying to build a REST-Service with encapsulated http response codes尝试使用封装的 http 响应代码构建 REST 服务
【发布时间】:2013-05-27 06:44:30
【问题描述】:

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

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

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

【问题讨论】:

  • 那不是 REST。为什么要再做一次 SOAP?
  • 我很困惑,@LutzHorn。您在哪里看到 SOAP?
  • 不要在结果中嵌入错误代码,而是将其作为 HTTP 标头发送。
  • @Rob 在 SOAP 中,服务总是返回 200 OK。请求的实际结果嵌入在响应正文中。这就是你打算做的。那不是 REST。
  • 是的。您可以使用 JAX-RS 将响应代码、标头和正文设置为您想要的。虽然我不会推荐它。

标签: java jax-rs java-ee-5


【解决方案1】:

使用 JAX-RS 始终返回 200 OKContent-Type: application/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 的核心部分是包含适当响应代码的统一接口。

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2021-11-26
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多