【问题标题】:Rest API with a context object as the parameter以上下文对象作为参数的 Rest API
【发布时间】:2014-03-17 13:08:06
【问题描述】:

我正在使用 JAX-RS 设计一个 REST API。端点如下所示:

@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response get(
     @QueryParam("param1") final String param1,
     @QueryParam("param2") final String param2) {
     // Code goes here
} 

我有将近 7-8 个参数。所以我想做如下的事情:

@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response get(@Context MyContextObject context) {
     // Code goes here
}

我的上下文对象如下:

final class MyContextObject {

    // get methods

    public MyContextObject(final Builder builder) {
        // set final fields
    }

    private final String param1;
    private final String param2; 

    public static final class Builder {
        // builder code goes here
    }
}

你能告诉我怎么做吗?

提前致谢。

【问题讨论】:

  • 我从未使用过 JAX-RS,但似乎这应该是可行的。你试过了吗?如果是这样,您可以粘贴错误吗?我怀疑您必须修改请求 JSON/XML 以将新模式与包装器匹配,或者以某种方式为其定制反序列化器。
  • 也许这会有所帮助stackoverflow.com/questions/3047400/…

标签: java api rest parameters model


【解决方案1】:

如果你想按照你说的创建单独的 bean 类,你需要在 bean 类中获取查询参数,如下所示。

final class MyContextObject {

// get methods

public MyContextObject(final Builder builder) {
    // set final fields
}

private @QueryParam("param1") final String param1;
private @QueryParam("param2") final String param2;
//and so on...
public static final class Builder {
    // builder code goes here
}
}

如果这样做,查询参数将绑定到 bean 类中的这些私有变量,您可以使用 getter 在您的休息服务中获取它们。

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多