@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错误。
我是否遗漏了什么?
有没有弹簧属性来处理这个?
提前致谢。
答案 0 :(得分:3)
您不能,只需创建另一种方法来捕获网址中没有{name}的网址。
@RequestMapping(value="/return",method=RequestMethod.GET)
答案 1 :(得分:3)
要使您自己建议的解决方案有效并使用单一方法,您可以这样使用:
@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个端点。
答案 2 :(得分:1)
试试这个:
@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);
}