当前位置: 首页 > 面试题库 >

两种具有不同查询参数的GET方法

步建茗
2023-03-14
问题内容

我们可以创建相同的GET URI,但使用不同的查询参数吗?

例如,我有两个REST GET URI:

/questions/ask/?type=rest
/questions/ask/?byUser=john

现在,REST服务无法将两个GET方法识别为单独的,而仅将其声明为第一个GET方法。

  1. 为什么会这样呢?
  2. 有什么办法可以使两个具有不同查询参数的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代表多个资源,则意味着您在某处出错。



 类似资料:
  • 我们可以创建相同的GET URI但使用不同的查询参数吗? 例如,我有两个REST GET URI: 现在REST服务没有将两个GET方法识别为单独的,并且只将其视为声明为第一个的1 GET方法。 为什么会这样 如果您能引用任何资源,我们将不胜感激。

  • 我想为相同的url模式创建两个具有不同参数的方法 Spring支持这一点,并且工作正常。SpringDoc没有。它使用2个参数创建一个endpoint。这是一个已知的问题吗?

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 我试图以以下格式提出API请求: 如何使用组件查询字符串参数执行此操作? 由于重复数组键,上述方法不起作用? 我也尝试过:

  • 我改变了切入点的顺序,它总是排在第二位。关于如何解决这个问题有什么想法吗? 更新 一旦我发布了这个问题,我就有了一个想法。我这样更改了切入点: 现在异常消失了,但仍然有一个小问题(我想这个问题更容易解决):因为ArrayList实现了可序列化,所以至少在我使用ArrayList的测试用例中,两个切入点都被执行了。 我将对此进行研究,并发布我的发现,但也感谢您的帮助;) 我将代码改为只使用一个切入点

  • 我有一个场景,其中一个url“serachUser”可能带有两个不同的值(请求参数)userId或UserName。 为此我创造了两种方法 但我得到模糊映射发现异常。Spring能处理这种情况吗?