首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不使用@RequestParam的情况下使请求参数成为默认必填参数

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

Stack Overflow用户
提问于 2017-01-27 00:39:07
回答 1查看 38关注 0票数 0

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

代码语言:javascript
运行
复制
@GetMapping("/dl4j/getWordVector")
public ResponseEntity<List<Double[]>> getWordVector(String modelName, String word) {
    // ...
}

省略一个参数,我将看不到MissingServletRequestParameterException。仅当我使用@RequestParam时才有效

代码语言:javascript
运行
复制
@GetMapping("/dl4j/getWordVector")
public ResponseEntity<List<Double[]>> getWordVector(@RequestParam(value="modelName", required = true) String modelName, String word) {      
    // ...
}

为什么会这样呢?既然我猜REST Api中的大多数参数都是必需的,那么它应该是一个选择退出,不是吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-27 02:13:16

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

有些人会争辩说,你应该使用@PathParam来访问RESTfull资源,但如果参数是可选的,@PathParam的效果会更差,因为顺序很重要。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41878497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档