如何在不使用@RequestParam的情况下使请求参数默认为必需



如果我像这样形式化我的方法:

@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 中的大多数参数都是必需的,不是吗?

@RequestParam不是为REST发明的,它是为表单提交和URL请求而发明的,在这些情况下,参数很少是可选的。

有些人会争辩说,我们应该@PathParam访问 RESTfull 资源,但如果参数是可选的,@PathParam工作会更糟,因为排序很重要。

您需要记住的另一件事是,参数名称不会自动成为字节码的一部分,参数名称仅在使用调试信息编译时才可用,这就是您需要注释的原因。 查看此链接以获取更多信息

最新更新