如果我像这样形式化我的方法:
@GetMapping("/dl4j/getWordVector")
public ResponseEntity<List<Double[]>> getWordVector(String modelName, String word) {
// ...
}
省略一个参数,我将看不到MissingServletRequestParameterException
。仅当我使用@RequestParam
时才有效
@GetMapping("/dl4j/getWordVector")
public ResponseEntity<List<Double[]>> getWordVector(@RequestParam(value="modelName", required = true) String modelName, String word) {
// ...
}
为什么会这样呢?既然我猜REST Api中的大多数参数都是必需的,那么它应该是一个选择退出,不是吗?
发布于 2017-01-27 02:13:16
@RequestParam
不是为REST而发明的,它是为表单提交和URL请求而发明的,在这些情况下,参数很少是可选的。
有些人会争辩说,你应该使用@PathParam
来访问RESTfull资源,但如果参数是可选的,@PathParam的效果会更差,因为顺序很重要。
你需要记住的另一件事是,参数的名称不会自动成为字节码的一部分,参数名称只有在使用调试信息进行编译时才可用,这就是为什么你需要注释的原因。有关详细信息,请查看此link
https://stackoverflow.com/questions/41878497
复制相似问题