如何解决是否可以在 REST 控制器中使用 @Parameter ?
我正在尝试将 @Parameter
用于 @RestController
中的路径参数,但它忽略了该参数。
注意:如果我使用 @PathVariable
代替(评论),一切都很好。但是,@PathVariable
不会生成具有 springdoc-openapi-maven-plugin
自动生成的所有属性(例如“描述”、“引用”等)的 OpenAPI yaml 文件。
是否可以在 REST 控制器中使用 @Parameter
?
这是我的代码:
@RequestMapping("/channels")
@RestController
public class ChannelRESTController {
@PostMapping("{channelId}/connect")
@Operation(summary = "Initiates a session to a channel",tags = { "session" })
@ResponseBody
ResponseEntity<?> connect( //
@Parameter(name = "channelId",in = ParameterIn.PATH,required = true,description = "The channel id") String channelId,// @PathVariable(required = true) String channelId,@Parameter(description = "Credentials' username") String username,@Parameter(description = "Credentials' password") String password
) {
System.out.println(
"Starting channel #" + channelId); // displays null :(
return ...
}
解决方法
为了自动生成 OpenAPI YAML 文件,可以将两个注释添加到参数中。
简而言之,上面的参数channelId
可以注释为:
@PathVariable(required = true)
@Parameter(name = "channelId",in = ParameterIn.PATH,required = true,description = "The channel id")
String channelId,
在这种情况下:
- 第一个注释
@PathVariable
允许 Spring 从 URL 检索参数。 - 第二个注释
@Parameter
在由springdoc-openapi-maven-plugin
插件生成的 OpenAPI (YAML) 文件中生成正确的描述。
这个解决方案并不理想,但可以解决问题。我希望将来插件能够自己识别第二个,避免同时输入它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。