我们创建了一个资源,例如:
@Path("whatever")
public class WhateverResource {
@POST
public Response createWhatever(CreateBean bean) { ...
@DELETE
@Path("/{uuid}")
public void deleteWhatever(@PathParam("uuid") UUID uuid) { ...
等等 GET、PUT、HEAD。
现在我们认为我们认为我们需要检查底层功能是否实际启用。一次检查,当它失败时,所有操作都应该简单地导致 501。
我的第一个想法是复制现有资源,例如:
@Path("whatever")
public class WhateverResourceIsntAvailable {
@POST
public Response createWhatever(CreateBean bean) {
throw 501
@DELETE
@Path("/{uuid}")
public void deleteWhatever(@PathParam("uuid") UUID uuid) {
throw 501
因此,两个资源都指定了完全相同的操作。导致我们无法(轻松)在需要注册资源的时间点调用该检查的问题。
除此之外,这种重复看起来不是很优雅,我想知道是否有一种“更规范”的方法来解决这个问题?
编辑:另一种选择是将检查添加到现有资源中,添加到每个资源中,但这意味着:对每个操作进行检查。添加新操作时很容易忘记这一点。
我设想有这样的事情:
一个“基础资源”,被注册
当对该资源调用任何操作时,该请求应该被“委托”,具体取决于该底层功能
要么是一个总是给 501 的资源
或执行真正工作的“真实”资源
理想情况下,无需重复检查代码或重复操作端点规范。
相关分类