Jersey:@PathParam,带逗号到 List

2023-12-20

我想用这种模式调用我的网络服务:

/resource/1,2,3

在我的类中,我想将参数绑定到对象列表

@Path("/resource")
public class AppWS {

    @GET
    @Path("/{params}")
    public Response get(@PathParam("params") List<MyObject> params) {
        return Response.status(200).entity("output").build();
    }
}

使用一个简单的对象:

public class MyObject {
    Integer value;
    public MyObject(Integer value) {
        this.value = value;
    }
}

注意:如果可能的话,我不想创建一个扩展 List 的 MyObjectList (并且有一个分割我的字符串的构造函数)

我该如何进行?


我不确定方法1,2,3.

如果你坚持,

private Response get(List<MyObject> params) {
}

@GET
@Path("/{params}")
public Response get(@PathParam("params") String params) {

    return get(Stream.of(params.split(","))
        .map(MyObject::new)
        .collect(Collectors.toList()));
}

如果你真的坚持的话

注解,

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
public @interface MyObjectsParam {

}

转换器,

public class MyObjectsParamDateConverter
    implements ParamConverter<List<MyObject>> {

    @Override
    public List<MyObject> fromString(final String value) {
        return Stream.of(params.split(","))
          .map(MyObject::new)
          .collect(Collectors.toList())
    }

    @Override
    public String toString(final List<MyObject> value) {
        return value.stream()
            .map(o -> o.getValue())
            .map(Object::toString)
            .collect(Collectors.joining(","));
    }
}

提供者,

@Provider
public class MyObjectsParamConverterProvider
    implements ParamConverterProvider {

    @Override
    @SuppressWarnings("unchecked")
    default ParamConverter getConverter(final Class<S> rawType,
                                        final Type genericType,
                                        final Annotation[] annotations) {
        for (final Annotation annotation : annotations) {
            if (MyObjectsParam.class.isInstance(annotation)) {
                return new MyObjectsParamDateConverter();
            }
        }

        return null;
    }
}

现在你可以像这样使用它。

@GET
@Path("/{params}") // still '1,2,3'
public Response get(
    @PathParam("params")
    @MyObjectsParam // IN ACTION!!!
    List<MyObject> params) {

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey:@PathParam,带逗号到 List 的相关文章

随机推荐

  • 2020年instagram api更改后如何从instagram公共帐户获取instagram关注者数量?

    我试图仅使用用户的 Instagram 句柄 又名 myusername 来检索关注者计数 我在几个答案中读到 您可以访问 https www instagram com username a 1 来检索包含所有详细信息的 json 块 然
  • Google Compute 实例是否有稳定的公共 DNS 名称?

    这是一个分为两部分的问题 GCE实例有稳定的公共DNS名称吗 例如 公共 IP a b c d 的默认 DNS 名称似乎是 d c b a bc googleusercontent com 如果是 获取此信息的最佳方式是什么 这是我迄今为止
  • Websocket 握手期间发生 Rails ActionCable 错误

    我正在尝试使用 Rails 5 ActionCable 构建一个消息应用程序 但我在 JS 控制台中收到上述错误 ws localhost 3002 cable failed Error during WebSocket handshake
  • 有没有办法为 ASP.NET 中的应用程序定义时区?

    有没有一种方法可以为 ASP NET 中的应用程序定义时区 以便隐式转换从当前服务器时间读取 与当前服务器时间比较的所有时间 或者我是否需要在每次 DateTime Now 调用时放入转换语句 我不确定 ASP 的最新发展 但是这个2006
  • 不带括号的 C 函数调用

    这是一个简单的 C 程序 include
  • C# 中 float 类型的最大值

    当我这样做时 float x float MaxValue 我的结果是 3 40282347E 38 E 38是什么 如果没有这个符号 我该如何表示最大数 msdn说范围 1 5 10 45到 3 4 10 38 但这对我没有帮助 E 38
  • nvprof 输出:“没有分析内核”是什么意思,以及如何修复它

    我最近通过系统的包管理器在我的 arch Linux 机器上安装了 Cuda 并且我一直在尝试通过运行一个简单的向量加法程序来测试它是否正常工作 我只是复制粘贴代码本教程 https devblogs nvidia com even eas
  • 在 x86 汇编中划分 64 位时出现问题

    在 x86 程序集中进行划分时 我不断收到 程序收到信号 SIGFPE 算术异常 这很令人困惑 因为如果我除以 10 答案应该小于 64 位答案 mov 0x82b40000 eax mov 0x21c3677c edx mov 10000
  • 构造函数的单元测试

    我正在实验室进行单元测试 下面是我正在测试的应用程序中的一段代码 大多数单元测试都已完成 但关于下面的构造函数 我只是不知道如何测试它 例如 构造函数到底对数组元素做了什么 测试构造函数的好方法是什么 是否有一个善良的灵魂可以给我一个正确的
  • 嵌入字体在 Flex 移动 ActionBar 中不起作用

    我嵌入了一些字体 并在我的移动应用程序中使用它们 它们都正常工作 除了我尝试用于 ActionBar 的字体 他们在其他地方工作 并替代 Comic Sans MS for titleCGF 将其更改为 Comic Sans 那么为什么它不
  • C++中不同参数的重载虚函数

    我想在 C 中重载具有不同参数的虚函数 但它不起作用 virtual void Draw int nDeltaX int nDeltaY virtual void Draw int nDeltaX int nDeltaY bool m bF
  • 找不到必要的构建工具。使用 devtools 遇到错误

    我正在尝试安装 BTYDPlus 包 https github com mplatzer BTYDplus https github com mplatzer BTYDplus 当我输入这个命令时 devtools install gith
  • Excel-VBA:在 .aspx 网页上抓取数据之前的按钮和下拉列表

    我想使用 VBA 从网页获取表格 但无法直接访问它 因为我需要从一个选项卡切换到另一个选项卡 该问题依赖于网页的 aspx 端 URL 不会相应地演变 URL http www morningstar fr fr fundquickrank
  • 使用 aws cli 将日志流式传输到 elastic

    我想启用从 Cloudwatch 到 Elasticsearch 到 Amazon Elasticsearch Service 的流 我熟悉如何手动执行此操作 我正在寻找一种通过运行 aws cli 命令来实现此目的的方法 假设 Elast
  • Vagrant/Clojure/Emacs

    我想构建一个标准环境 用于使用 Emacs 探索 Clojure 有人有适合这个的食谱吗 我正在考虑一个运行 Ubuntu 风格的 Vagrant 系统 带有 NREPL 和一些有用的 EMACS 支持插件 vagrant box add
  • 批量插入现有数据:防止 JPA 在每次插入之前进行选择

    我正在开发一个 Spring Boot 应用程序 该应用程序使用 JPA Hibernate 作为持久层 我目前正在实现迁移功能 我们基本上将系统的所有现有实体转储到 XML 文件中 此导出还包括实体的 ID 我遇到的问题位于另一侧 重新导
  • 标准 C++14 委员会草案是否公开?

    截至上周六 http isocpp org blog 2013 04 trip report iso c spring 2013 meeting 今天下午在英国布里斯托尔 ISO C 标准委员会通过了 通用 lambda 动态数组 C99
  • cuda 推力中的 fp16 支持

    我无法在推力 cuda 模板库中找到有关 fp16 支持的任何信息 甚至路线图页面也没有任何相关信息 https github com thrust thrust wiki Roadmap https github com thrust t
  • R如何安装指定版本的bioconductor包?

    我想使用的当前版本的软件包在生物导体上失败 然而 旧版本曾经可以工作 我想知道如何安装特定版本的生物导体包 提前致谢 在我的例子中 该软件包称为biomaRt 失败的版本是2 34 2 而2 34 0是成功的 重要更新 今年是2022年 我
  • Jersey:@PathParam,带逗号到 List

    我想用这种模式调用我的网络服务 resource 1 2 3 在我的类中 我想将参数绑定到对象列表 Path resource public class AppWS GET Path params public Response get P