java - 有没有办法将 Google 的自定义方法与 Jersey 资源一起使用?
问题描述
我正在寻找一种方法来使我的 JAX-RS API 更具可读性,并且遇到了 Google 的自定义方法方法:
https://cloud.google.com/apis/design/custom_methods
我一直在寻找这个,因为我的一些实体执行的操作比我用传统 HTTP 动词所能表达的要多。Google 模式是在 URI 末尾使用冒号 ( :
),将实体/集合与所需的操作分开。
我试图将此模式应用于一个简单的 Jersey 资源,只是为了测试它是如何完成的。我有一个StudentDetailsResource
用 注释的资源类@Path("students/{studentId}")
和一些用@Path
.
如果我的方法在自定义方法之前有另一个实体,那么一切正常。假设注册方法带有注释
@Path("subjects/{subjectId}:enroll")
。
当动作紧跟在资源类 URI 之后时,问题就出现了,因为@Path
使用了prefixWithSlash
所有子资源的 URI 模板。因此,如果我有一个 dropout 方法,注释会看起来像@Path(":dropout")
,但 URI 模板会变成/students/{studentId}/:dropout
,这/:
会在匹配阶段中断。
我已阅读有关 Jersey Providers 和 ResourceDelegates 的信息,但我找不到替换 URI 模板默认操作的方法prefixWithSlash
。
问题是:如何应用 Google 的自定义方法方法,或者如何避免prefixWithSlash
Jersey 的默认行为?
注意:我知道这是一个愚蠢的例子,还有其他方法可以解决这个特定情况,但我有更复杂的情况可以从自定义方法中受益。
解决方案
推荐阅读
- arrays - 如何在 Julia 的数组中交换一个特定值?
- python - Cifar100 只有 16 个训练图像和 16 个训练标签
- python - 在像 IDLE 这样的 Python shell 中在 VSCode 中运行 Python
- mysql - 如何仅将我的第一个表的一部分加入另一个表?
- xml - 使用 PowerShell 解析 XML 并进行日期比较
- android - 打开图像时如何修复此错误
- r - 删除时间序列中不是实际日期的 NA 值
- linux - 在 `include/trace/events/net.h` 中哪里可以找到 linux 网络事件的文档?
- javascript - 为什么事件在 HTML 中有“on”前缀?
- node.js - 如何搜索猫鼬模式对象?