繁体   English   中英

使用Spring 4.2,我如何将路径变量作为可选项

[英]With Spring 4.2 how can i make the path variable as optional

@RequestMapping(value="/return/{name}",method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req,@PathVariable(name) String inputName) {
    return new ResponseEntity<>(inputName, HttpStatus.OK)
}

我找到了解决方案

@RequestMapping(value="/return/{name}",method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req,@PathVariable(name) Optional<String> inputName) {
    return new ResponseEntity<>(inputName.isPresent() ? inputName.get() : null, HttpStatus.OK)
}

但它没有按预期工作。

如果没有给出name的值,则抛出405。

示例:

return / ram工作正常。

返回抛出405错误。

我是否遗漏了什么?

有没有弹簧属性来处理这个?

提前致谢。

您不能,只需创建另一种方法来捕获URL中没有{name}的URL。

@RequestMapping(value="/return",method=RequestMethod.GET)

要使您自己提出的解决方案工作并使用单个方法,您可以像这样使用:

@RequestMapping(value= {"/return/{name}", "/return"},method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req, @PathVariable("name") Optional<String> inputName) {
    return new ResponseEntity<>(inputName.isPresent() ? inputName.get() : null, HttpStatus.OK);
}

最后它仍然是像Baldurian提出的2个端点。

尝试这个:

@RequestMapping(value= {"/return/{name}", "/return"},method=RequestMethod.GET)
public ResponseEntity<String> ReturnName(HttpServletRequest req, @PathVariable("name") Optional<String> inputName) {
    return new ResponseEntity<>(inputName.isPresent() ? inputName.get() : null, HttpStatus.OK);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM