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.1
的 composer.json
。如果您可以提供|选择您提供的语言版本(-g
),那就太好了。我真的不明白为什么 ppl 没有开始对生成器进行版本控制。以上是关于swagger-codegen 或 openapi-generator PHP 版本的主要内容,如果未能解决你的问题,请参考以下文章
将 swagger-codegen 项目导入现有的 Android 项目
Swagger-Codegen:如何将所有文件合并到一个文件中以进行客户端代码生成