我在 Jersey @Path 遇到问题,我希望为我的系统实现沙箱环境。基本上通过给定的 url 禁用或启用沙箱模式,如下所示:

沙盒站点



常规站点



我想办法去哪里使用正则表达式连接到我的项目根类的路径。

@Path("/{mode:sandbox|}")
public class JerseyResource{

    boolean isSandbox = false;

    public JerseyResource(@PathParam("mode") String mode) {
        if(mode.equals("sandbox"))
            isSandbox = true;
    }

    @GET
    @Path("data")
    @Produces(MediaType.TEXT_PLAIN)
    public Response data() {
        if(isSandbox)
            return Response.ok("Sandbox is on").build();
        return Response.ok("Sandbox is off").build();
    }
}

尝试“GET:../MyProject/sandbox/data”效果很好,它返回“Sandbox is on”。
但是当我执行“GET: ../MyProject/data”时,它只会返回一个未找到的 404 页面。

这里有没有办法在使用固定字符串的同时使用路径 url 的空字符串作为 Jersey 中的参数?

最佳答案

尝试使用:

@Path("{mode:(/sandbox)?}")

您还需要将模式比较更改为:
if (mode.endsWith("sandbox"))
    isSandbox = true;

和您的数据资源:
@Path("/data")

10-08 11:44