问题标签 [swagger-codegen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
302 浏览

node.js - 用于 Node.js 的 Swagger-codegen 服务器存根,用户/客户端身份验证实现

我正在使用 swagger-editor 中嵌入的 swagger-codegen 为 Node.js 生成服务器存根。

在自定义生成的文件并.js成功运行它们之后,我正在为服务器添加基于用户/客户端的身份验证支持。通过 swagger-editor 添加安全规范后,我注意到除了文件之外,所有其他生成的文件都相同,并且没有为更改生成新文件。 basicoauth2api/swagger.yaml

这是否意味着生成的 Node.js 服务器存根(包括它使用的 swagger-tools 包)不提供任何用户/客户端身份验证功能?如果是这种情况,当我的用户/客户端身份验证代码添加到文件时,我是否需要对swaggerTools.initializeMiddleware()生成的语句进行任何更改?index.js

0 投票
2 回答
11850 浏览

java - Swagger Codegen CLI Java 客户端 - 如何正确使用它

我目前正在玩我的 jersey2 休息服务。为了更好地了解给定服务(描述、类型等),我大量使用了 swagger (swagger-jersey2-jaxrs)。因此,我能够生成我的服务描述 (swagger.json),并且可以通过 swagger ui 查看和探索它们。

现在我需要创建一些客户端来使用这些服务。我遇到了 swagger codegen cli,它是一个很好的工具,可以生成你的客户端和许多不同的语言(在我的例子中是 java)。我能够生成 api 客户端和正在使用的模型。

在这里,我面临第一个问题。REST 服务和 swagger 描述受 http 基本身份验证保护。我阅读了文档 ,它给了我一些提示,即有可能使用基本身份验证。在这一点上,我不得不提到,从我的角度来看,文档非常差。它说:

-a , --auth 在远程获取 swagger 定义时添加授权标头。传入一个 URL 编码的 name:header 字符串,用逗号分隔多个值。

我想到的第一件事是在 http 标头中传递一个字符串,但这不起作用,甚至谷歌搜索如何使用 swagger cli 的基本身份验证也没有得到一些明确的答案。经过大量尝试和错误后(我使用的是 CLI 2.1.2),我终于找到了正确的格式:

java -jar swagger-codegen-cli-2.1.2.jar generate -a "授权:基本 YWRtaW46YWRtaW4=" -i http://localhost:8080/webproject/restapi/swagger.json -l java -o restclient

其中 YWRtaW46YWRtaW4= 在我的例子中是 admin:admin 的 base64 编码值。

到现在为止还挺好。生成的 java 客户端也必须使用基本身份验证。我查看了 ApiClient 中的方法,发现了 setUsername 和 setPassword。我认为这种方法使客户能够使用基本身份验证,但没有运气。

所以我深入研究了生成的类,尤其是 ApiClient 和几个生成的 ApiService 类。我发现 setUsername 和 setPassword 无效,原因如下:

同时HashMap定义如下:

身份验证 hashmap 变得不可变,但为什么呢?什么目的?此外,ApiClinet 内部没有生成所需身份验证对象的辅助方法,因此我执行了以下操作:

1) 注释掉 authentications Collections.unmodifiableMap(authentications) 行,使 hashmap 再次变为可修改

2)手动创建所需的身份验证对象

3) 将 auth 对象添加到 apiClients 身份验证 hashmap:

4)修改invokeApi方法(ApiClient.java)

第 4 步是必要的,因为 ApiServices 调用 apiClient 方法,如下所示:

另一种可能的解决方案是在每个 apiService 中定义身份验证哈希图的密钥,例如:

完成所有修改后,一切都按预期工作,但我不认为这是自动生成的休息客户端背后的想法。所以我的问题是:我是否遗漏了一些观点,或者我是否应该将大摇大摆的生成客户端(在本例中为 java)更多地考虑为正在开发的 beta 解决方案?请让我正确,我认为整个 swagger 框架(jersey2 支持、openapi、swaggerui、codegen)是一件很棒的事情,我感谢开发人员的努力,但我想正确使用 codegen,我不认为背后的想法是所以必须以这种方式自定义生成的 ApiClient 和 ApiServices。

0 投票
1 回答
4881 浏览

ruby - 如何使用公共 swagger-generator docker 镜像生成客户端?

我们有一个完全 dockerized 的 Web 应用程序,其中包含 API 的有效 Swagger 定义。API 在其自己的 docker 容器中运行,我们使用 docker-compose 来编排所有内容。我想生成一个基于 Swagger 定义的 Ruby 客户端http://api:8443/apidocs.json

我已经翻阅了这里的文档,这使我找到了Swagger用于生成客户端和服务器代码的公共 docker 映像。遗憾的是,缺少文档并且没有提供实际使用 docker 映像生成客户端的示例。

Dockerfile表明它的容器运行一个 Web 服务,我只能假设它是http://generator.swagger.io的 dockerized 版本。因此,我希望能够使用以下命令生成客户端:

curl -X POST -H "content-type:application/json" -d \ '{"swaggerUrl":"http://api:8443/apidocs"}' \ http://swagger-generator:8080/api/gen/clients/ruby

这里没有运气。即使我已经确认 swagger 定义对(npm -q install -g swagger-tools >/dev/null) && swagger-tools validate http://api:8443/apidocs.

有任何想法吗?

0 投票
1 回答
4868 浏览

javascript - Swagger 客户端生成

我有一个npm基于 - 的项目,我想在swagger其中引入 - 基于 REST API 客户端。我的想法是拥有 API 描述yaml文件并在构建步骤中生成客户端。有没有众所周知的方法来做到这一点?我发现只是swagger-js-codegen,但我不清楚如何将它集成到构建过程中。

0 投票
2 回答
2366 浏览

swagger - 如何过滤生成的 Swagger JSON (yaml)

我有超过 5k 行长的 swagger.json 文件,描述了数百个路径和对象。我想仅使用部分端点生成一个 TypeScript 客户端(使用 swagger-codegen)。我不希望生成的 TypeScript 应用程序包含与 swagger.json 的未使用部分连接的类或接口

如何仅过滤出 Swagger 文档的一部分,描述指定的路径组(例如所有以 开头的路径/api/*)?特别是我希望过滤后的 JSON 不包含definitions未使用的数据结构。

0 投票
1 回答
1310 浏览

scala - 在 sbt compile 上获得未解决的依赖关系


下面是我的 scalatra 项目中的 build.sbt 文件。当大多数依赖项得到解决时,由于 commons-codec 和 jetty 插件,构建失败:

当我尝试运行 sbt compile 时,出现以下错误。删除 .ivy 和 .sbt 后重试。仍然没有帮助:

此 build.sbt 由 swagger-scalatra 模板自动生成

0 投票
1 回答
135 浏览

swagger - 无限查询参数

我的应用程序有可能采用无限查询参数,例如

<baseURL>/path?filter={value}&filter={value1}&filter={value2}&....filter={value999}

如何在我的 YAML 文件中记录此内容并使用 swagger codegen 创建 API?

我通过了以下 YAML 模板:

这会给我一个范围,因为<baseURL>/path?filter={1,2,3...n} 这是唯一的方法吗?

0 投票
0 回答
627 浏览

swagger - swagger codegen spring boot 缺少 XmlRootElement 和 XmlElement

我使用以下命令使用 swagger 生成 spring boot 代码

在 swagger.yaml 中使用以下定义:

生成的代码如下:

但是要让restful API成功返回XML,需要添加@XmlRootElement(name = "AlertDef")到类和@XmlElement每个set方法中。

yaml文件中是否缺少某些内容或swagger codegen目前不支持它?

0 投票
1 回答
571 浏览

servicestack - 从 Servicestack api metadata/swagger 生成 javascript 客户端

有没有办法根据元数据/Swagger 自动生成 ServiceStack javascript(无打字稿)客户端?以某种方式将它与 webpack 集成会很好。

我不确定是否可以使用 swagger-js-codegen 执行此操作(此包从 swagger 规范文件生成 nodejs 或 angularjs 类)。

实际上 swagger 插件不共享服务来访问 swagger.json 以获得完整的架构(架构被拆分)。是否有任何解决方法可以将 swagger codegen 用于 javascript?

通过访问http://localhost:12116/resources可以获得

并使用http://localhost:12116/resource/import

更新 2016-11-26 我能够生成文档

0 投票
1 回答
11790 浏览

typescript - 如何使用 Swagger Codegen TypeScript Fetch Client

有没有人成功使用 Swagger 代码生成器创建了一个可以在浏览器中使用的 TypeScript Fetch 客户端?我正在尝试在使用 TypeScript 的 React 应用程序中使用生成的 API 客户端。

尽管我已经成功生成了一个客户端(即 api.ts 文件),但我对它以以下导入开始的事实感到困惑:

虽然我可以成功找到 isomorphic-fetch 和 core-js 的 TypeScript 类型(即@types),但我找不到 querystring 和 url 的类型。结果,我得到[ts] Cannot find module...querystringurl还有assign进口。

这个客户端实际上不打算在浏览器中使用吗?否则,任何人都可以就我在这里可能做错的事情提供任何建议吗?

提前感谢您的帮助!