当前位置: 首页 > 知识库问答 >
问题:

@RestController类,具有两个@RequestMapping,都具有相同的endpoint一个没有参数,另一个有参数

封瑞
2023-03-14

我正在尝试创建restful API(使用Spring Boot v2.0.0.Release),我希望有一个endpoint,但我希望有两种可能的用途:

GET /time - outputs current time (e.g. linux epoch in seconds)
GET /time?delta=100000 (time adjusted by the delta in seconds e.g. +ve=future -ve=past)

首先,这可能吗?其次,有人有代码示例吗?

非常感谢你的帮助

共有3个答案

呼延俊良
2023-03-14

您可以使用Java 8和Spring执行类似的操作,假定返回类型为String

@GetMapping("/time")
public String getTime(@RequestParam Optional<Integer> delta) {
   //...
}

@RequestMapping("/time")
public String getTime(@RequestParam Optional<Integer> delta) {
    //...
}
翁烨霖
2023-03-14

不,这是不可能的。为什么不使用可选参数创建一个endpoint?

检查类似问题的其他答案:

Spring MVC在endpoint上使用相同的路径来返回不同的内容?

具有不同查询参数的两个GET方法:REST

潘衡
2023-03-14

谢谢你的建议,我发现这对我有用。它需要添加defaultValue。

@RequestMapping(value = "/time",
                produces = { "text/plain" },
                method = RequestMethod.GET)
public ResponseEntity<String> getTime(@RequestParam(value = "delta",
                                                     required = false,
                                                     defaultValue = "0")
                                                     long delta) {
    if (0L == delta) {
        return new ResponseEntity<String>(calcTime(), HttpStatus.OK);
    }
    else {
        return new ResponseEntity<String>(calcTime(delta), HttpStatus.OK);
    }
}
 类似资料:
  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我有一个A类像: 现在还有另一类X,例如: 现在,ClassY和ClassB是一样的,就像: 我想将A的实例复制到Y的新对象中。 我遇到过做类似映射的推土机,但那是如果值是原始的。我不知道如何映射它们中的类。尝试用java实现这一点。 我偶然发现了答案https://stackoverflow.com/a/36196948/2733350

  • 问题是: 创建一个名为Duo的泛型类,它有两个参数a和B。声明一个名为a类型的第一个变量,以及一个名为B类型的第二个变量。创建一个接受这两个参数的构造函数。在构造函数中,将这些参数分别分配给声明的变量。 这是我能想到的解决方案: 然后,当我继续问下一个问题时,我被绊住了。问题是: 使用问题4中的Duo类声明并创建两个对象,如下所示: a) 第一个名为sideShape的对象分别由字符串类型和整数类

  • 为了理解TypeScript的精神,我在我的组件和服务中编写了全类型签名,这扩展到了angular2表单的自定义验证函数。 我知道我可以重载函数签名,但这需要每个返回类型的参数不同,因为将每个签名编译为单独的函数: 我还知道我可以返回单个类型(如Promise),它本身可以是多个子类型: 但是,在angular2自定义表单验证器的上下文中,单个签名(一个类型为的参数)可以返回两种不同的类型:带有表

  • 我在Wordpress和Visual Composer一起工作,我有一个切换容器。基本上,我点击每个选项卡,下面的内容就会发生变化。我想通过CSS为每个选项卡分配一个不同的图像作为背景。但是,我已经实现了这一点,因为每个选项卡都有相同的类名(由visual composer赋予它),所以图像是相同的。我需要弄清楚如何给每个选项卡一个唯一的id,这样我就可以给每个选项卡一个自己的背景图像--但是由于

  • 问题内容: 我有一个源输入 input.txt 我想将这些输入馈入程序,如下所示: 所以我尝试使用 xargs ,但是没有运气。 它给 但我想要 任何的想法? 问题答案: 到目前为止给出的解决方案都无法正确处理包含空格的文件名。如果文件名包含“或”,有些甚至会失败。如果输入文件是由用户生成的,则应该准备好使用令人惊讶的文件名。 GNU Parallel 很好地处理了这些文件名,并为您(至少)提供了

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