【问题标题】:Swagger Codegen is not working while generating java client for a Rest API having OAuth2.0 security为具有 OAuth2.0 安全性的 Rest API 生成 Java 客户端时,Swagger Codegen 无法正常工作
【发布时间】:2016-10-24 13:54:00
【问题描述】:

我正在尝试使用 swagger codegen 为具有 OAuth 2.0 安全性的 REST Api 生成客户端。电话如下:

    E:\>java -jar swagger-codegen-distribution-2.1.2-M1.jar  -a access_token:df8eb092-e34f-48f9-b4ce-32cdd1ae2613 -i http://localhost:8080/someapi/api-docs -l java -o E:\projects\prototypes\ApiClient

但此调用不起作用并生成以下输出:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
reading from http://localhost:8080/someapi/api-docs
reading from http://localhost:8080/someapi/api-docs
usage: Codegen
-a,--auth                 addes authorization headers when fetching the
                       swagger definitions remotely. Pass in a
                       URL-encoded string of name:header with a comma
                       separating multiple values
-d,--debug-info           prints additional info for debugging
-h,--help                 shows this message
-i,--input-spec <arg>     location of the swagger spec, as URL or file
-l,--lang <arg>           client language to generate.
                       Available languages include:
                       [android, async-scala, java, jaxrs, nodejs,
                       objc, scalatra, scala, dynamic-html, html,
                       swagger, tizen, php, python]
-o,--output <arg>         where to write the generated files
-t,--template-dir <arg>   folder containing the template files

我最近为此 API 实现了 OAuth2.0,因此我认为我使用此 API 设置的身份验证标头存在一些问题,因为之前的 codegen 运行良好。

我为上述命令中的 -a 选项尝试了以下组合:

 -a access_token:<token>
 -a "access_token":<token>
 -a name:AUTHORIZATION,<token>

但没有任何效果。 我今天的演示真的很麻烦。非常感谢任何快速帮助

谢谢

【问题讨论】:

  • 您的意思是您需要 OAuth2 授权才能访问 Swagger 定义,还是您的 Swagger 定义包含用于操作的 OAuth2 安全性?
  • 我想我需要 Oauth2 授权才能访问 API 的 Swagger 定义
  • 我认为这不是授权问题。对于输出,尝试在当前目录下给它一个路径,看看是否有效。

标签: java rest oauth-2.0 swagger


【解决方案1】:

我自己也一直在尝试同样的事情,我会发布我认为您的问题。请尝试以下格式的命令。

java -jar <Path of codegen jar>/swagger-codegen-cli.jar generate -i <path of swagger JSON>/swagger.json -l java -o <Output path>

在您的命令中,我没有在“http://localhost:8080/someapi/api-docs”中看到 JSON 文件名

如果这不起作用,这是我为使 codegen 成功工作所做的。

安装 要从源代码构建,您需要在 $PATH 中安装并提供以下内容:

  • Java 7 或 8
  • Apache maven 3.3.3 或更高版本

以下命令可用于从源代码构建代码生成

您也可以直接从 maven.org 下载 JAR(最新版本)

生成代码

您可以使用以下命令为从 Swagger 编辑器生成的特定 JSON 生成代码。

  • java -jar /swagger-codegen-cli.jar 生成 -i /swagger.json -l java -o

可以在链接https://github.com/swagger-api/swagger-codegen/blob/master/README.md#compatibility中找到与此相关的其他详细信息

生成的代码有maven构建,所以代码的库依赖在pom.xml中指定。

【讨论】:

    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多