如何在不使用@RequestParam的情况下按默认值生成请求参数

时间:2017-01-26 16:39:07

标签: spring

如果我正式化我的方法:

@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) {      
    // ...
}

为什么会这样? Imho应该选择退出,因为我猜REST Api中的大多数参数都是必需的,不是吗?

1 个答案:

答案 0 :(得分:1)

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

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

您需要记住的另一件事是参数名称不会自动成为字节码的一部分,参数名称仅在您使用调试信息进行编译时才可用,这就是您需要注释的原因。查看此link了解详情