首页 > 解决方案 > 当 Path 中的第一个参数丢失时,多个 PathParams 不会失败

问题描述

我有一个需要两个强制性路径参数的路径。当包含第二个参数但排除第一个参数时,我的服务会被击中,因为 URI 无效,因此我预计会出现 404。

@GET
@Path("service/{param1}/{param2}")
public Response getSuppliersBySupplierCode(@PathParam("param1") String param1, @PathParam("param2") String param2) {

        //do something
}

我希望在以下 3 个场景中的每一个中都有一个 404,但后两个有效。

..../service//-> 以 404 失败

..../service/param/-> 点击我的服务

..../service//param2-> 点击我的服务

为什么我在场景 2 和 3 中没有得到 404?我希望它会失败,因为我的两个参数之一丢失了

标签: javarestjersey

解决方案


第二种和第三种情况起作用的原因是默认情况下匹配路径变量,[^/]+?这意味着它们将匹配空字符串。您可以通过添加冒号然后添加正则表达式来更改进行匹配的正则表达式,如下所示{param1: [a-zA-Z][a-zA-Z_0-9]}。有关更多详细信息,请参阅本文


推荐阅读