Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 带有路径变量和请求参数的Swagger codegen maven插件OpenApi生成不工作的代码_Spring_Swagger_Swagger Codegen_Swagger Codegen Maven Plugin - Fatal编程技术网

Spring 带有路径变量和请求参数的Swagger codegen maven插件OpenApi生成不工作的代码

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

我面临着一个问题,与大摇大摆的代码生成存根。 我有两种服务。首先使用两种方法公开REST api,分别使用路径变量和请求参数:

    @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