具有不同查询参数的两个 GET 方法
我们是否可以使用相同的 GET URI 但具有不同的查询参数?
例如,我有两个 REST GET URI:
/questions/ask/?type=rest
/questions/ask/?byUser=john
现在,REST 服务不会将两个 GET 方法识别为单独的方法,并且只将其视为 1 个声明为第一个 GET 方法。
- 为什么会这样?
- 有没有办法使两个GET方法具有不同的查询参数?
如果您能引用任何资源,我们将不胜感激。
我们是否可以使用相同的 GET URI 但具有不同的查询参数?
例如,我有两个 REST GET URI:
/questions/ask/?type=rest
/questions/ask/?byUser=john
现在,REST 服务不会将两个 GET 方法识别为单独的方法,并且只将其视为 1 个声明为第一个 GET 方法。
如果您能引用任何资源,我们将不胜感激。
因为资源由其 PATH(而不是由其参数)唯一标识。您定义的两个资源具有相同的 PATH。
@Path("/questions/ask")
根据 JSR-311 规范:
此类方法(称为子资源方法)被视为普通资源方法(请参阅第 3.3 节),只是仅针对与通过将资源类的 URI 模板与方法的 URI 模板串联起来创建的 URI 模板匹配的请求 URI 调用该方法。
由于您的数据模型包含两个不同的资源,因此我建议使用不同的路径创建两个 rest 方法:
@Path("/questions/ask/type")
@Path("/questions/ask/user")
这是 RESTful 方式,因为一个 URI 表示一个且只有一个资源,并且不应有重载。如果一个 URI 表示多个资源,则表示您在某个地方弄错了。
不能重载 REST 请求。
在您的业务层中,您必须检查设置了两个变量中的哪一个,然后必须执行所需的处理。