Spring 带有路径变量和请求参数的Swagger codegen maven插件OpenApi生成不工作的代码
我面临着一个问题,与大摇大摆的代码生成存根。 我有两种服务。首先使用两种方法公开REST api,分别使用路径变量和请求参数:Spring 带有路径变量和请求参数的Swagger codegen maven插件OpenApi生成不工作的代码,spring,swagger,swagger-codegen,swagger-codegen-maven-plugin,Spring,Swagger,Swagger Codegen,Swagger Codegen Maven Plugin,我面临着一个问题,与大摇大摆的代码生成存根。 我有两种服务。首先使用两种方法公开REST api,分别使用路径变量和请求参数: @GetMapping(value = "/start/{pathVar}/operators", params = "login") public Operator getOperatorByLogin( @ApiParam @PathVariable Long pathVar, @Ap
@GetMapping(value = "/start/{pathVar}/operators", params = "login")
public Operator getOperatorByLogin(
@ApiParam @PathVariable Long pathVar,
@ApiParam(required = true) @RequestParam String login) {
return operatorRepository.findDistinctByLogin(login);
}
及
然后,我试图用swagger codegen maven为该端点生成插件存根,然后我就面临了这个问题
主线程java.lang.IllegalArgumentException中出现异常:映射没有“?login”的值
这种形式的URL是在生成的类中硬编码的
(...)
final Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("pathVar", pathVar);
String path = UriComponentsBuilder.fromPath(
"/start/{pathVar}/opeartors{?login}").buildAndExpand(uriVariables).toUriString();
(...)
引发异常,因为uriVariables中缺少登录映射键值。您应该小心定义文件.json或.yml,以便为参数定义正确的类型,因为有两种类型的参数: 路径参数GET/users/{id} 查询参数GET/user/findByLogin?name=myUserLogin 这两者在OpenAPI中有两种不同的声明 1路径参数 2查询参数 有关更多详细信息,请查看
"/start/{pathVar}/operators{?ids}": ...
"/start/{pathVar}/operators{?login}": ...
(...)
final Map<String, Object> uriVariables = new HashMap<String, Object>();
uriVariables.put("pathVar", pathVar);
String path = UriComponentsBuilder.fromPath(
"/start/{pathVar}/opeartors{?login}").buildAndExpand(uriVariables).toUriString();
(...)
paths:
/users/{id}:
get:
parameters:
- in: path
name: id # Note the name is the same as in the path
required: true
schema:
type: integer
minimum: 1
description: The user ID
parameters:
- in: query
name: myUserLogin
schema:
type: integer
description: The number of items to skip before starting to collect the result set