swagger-codegen 或 openapi-generator PHP 版本

Posted

技术标签:

【中文标题】swagger-codegen 或 openapi-generator PHP 版本【英文标题】:swagger-codegen or openapi-generator PHP version 【发布时间】:2022-01-04 04:24:17 【问题描述】:

实际问题:是否可以选择php版本(5.6, 7.1, 7.2, ...)来生成代码?

我从https://api.otto.market/docs 得到一个swagger.json 应该是openapi.json 左右,因为文件包含"openapi": "3.0.3",。无论如何...

到目前为止,我发现它们(swagger 和 openapi-generator) 似乎有用于代码生成的模板。 这些模板是用所用版本的语言编写的。

F.e.这个(openapitools/openapi-generator-cli)

docker run --rm -v $PWD:/local openapitools/openapi-generator-cli generate \
-i /local/path/to/swagger.json \
-g php \
-o /local/path/to/generated/code/

创建一个composer.json
...
"require": 
    "php": "^7.3 || ^8.0",
    ...
,
...

我现在可以使用模板并更改要求。 但我认为这不是代码生成器的目标。添加到底部的模板信息。

我猜应该有为其他 PHP 版本编写的模板。 但是我会如何选择它们呢? 有吗?


Swagger:正如我所读,swagger 是第一位的,而 openapi-generator 是一个 fork。 所以我尝试了招摇:

docker run --rm -v $PWD:/local swaggerapi/swagger-codegen-cli generate \
-i /local/path/to/swagger.json \
-l php \
-o /local/path/to/generated/code/

Swagger 为 PHP 5.5 创建了代码(截至生成的 composer.json)。 但它会带来警告,并且生成的代码看起来“损坏”。实际上我并不怀疑,因为该文件是为 openapi": "3.0.3 制作的。

但我看到的是:swagger 有 PHP 5.5 的模板。


我个人目前的结论: 我可以真正快速地生成代码。对于我并不真正(必须)知道的 API。 但是,如果我无法更改语言版本,它对我有什么帮助?

F.e.我在 2 个项目中需要一个 API 客户端。 一个在 PHP 7.1 中,另一个在 7.3 中。我该如何解决这个问题?

有人必须处理这个吗?或者有什么想法?



INFO模板:如何使用模板: 致电docker run --rm -v $PWD:/local openapitools/openapi-generator-cli author template -g php -o /local/templates/ 将所有模板保存到路径templates/。 然后你可以 f.e.将composer.mustache 复制到 f.e. deploy/templates/ 并更改它。 在生成代码时,您使用 -t /local/deploy/templates 来使用 your 更改的模板。 示例:

docker run --rm -v $PWD:/local openapitools/openapi-generator-cli generate \
-i /local/path/to/swagger.json \
-g php \
-o /local/path/to/generated/code/ \
-t /local/deploy/templates

【问题讨论】:

【参考方案1】:

Old versions of OpenAPI Generator(例如 3.0.0、4.0.0)支持旧的 PHP 版本。

要在 OpenAPI Generator CLI 版本之间轻松切换,您可能需要使用 NPM CLI wrapper for OpenAPI Generator。

【讨论】:

今天试过了。它的那种“尝试直到它起作用”。我们尝试了一些 CLI 版本,直到我们得到需要 7.1composer.json。如果您可以提供|选择您提供的语言版本(-g),那就太好了。我真的不明白为什么 ppl 没有开始对生成器进行版本控制。

以上是关于swagger-codegen 或 openapi-generator PHP 版本的主要内容,如果未能解决你的问题,请参考以下文章

Swagger接口测试框架-知识集锦

将 swagger-codegen 项目导入现有的 Android 项目

Swagger-codegen 开始使用

Swagger-Codegen:如何将所有文件合并到一个文件中以进行客户端代码生成

我可以在 swagger-codegen 中定义新的 mustache 模板变量吗?

将生成的 Flask 应用程序代码(Swagger-Codegen)粘合到后端实现的最简洁方法