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

问题描述 投票:10回答:2

我刚刚开始使用Swagger和NodeJS。我能够将Swagger实现到我的NodeExpress应用程序,并且能够准确地生成带有Swagger-Codegen(Typescript-Angular)的typescript-client-code。

我遇到的一个问题是生成的代码分散了很多不同的文件。我希望它只输出一个文件api.ts,它包含API调用和接口/模型的所有内容。

我一直在寻找解决这个问题的方法,因为随着后端的增长,很难读取和维护生成的客户端代码。

任何建议或指示将不胜感激。

节日快乐!谢谢

编辑:我一直在寻找这个问题的答案,但仍然没有找到答案。我目前正在开发一个使用ASP.NET Core的项目,他们有NSwag,它可以实现我想用Node Swagger实现的目标。

javascript angular express swagger swagger-codegen
2个回答
8
投票

TL; DR

您可以将所有文件编译为单个*.ts文件,如this post所示。

Continuous Integration Approach

Swagger代码生成器简化了维护,因为它允许您根据连续集成进行思考。

你不应该担心代码审查或美学(因为它是一个机器生成的代码),但是关于:

  • API版本控制
  • 函数,方法和类签名
  • 文档

如果您正在使用诸如Jenkins或Ansible之类的CI系统,则可以自动将库部署到private NPM account(用于JS和TS)或Maven server(用于Java和Kotlin)。

Private Maven

保持程序包版本号不断更新将允许IDE正确地提示用户有关API的更新。

enter image description here


3
投票

Swagger使用Mustache模板生成代码。为了进行更简单的更改,您可以简单地创建其中一个built-in templates的副本并进行修改。

然后你可以像这样使用你修改过的模板:

swagger-codegen-cli generate -t path/to/template/dir/ -i spec.json

但是,输出目录结构不能仅使用模板进行更改。为此,您需要一个自定义codegen模块。你可以create your own或修改其中一个built-in ones

© www.soinside.com 2019 - 2024. All rights reserved.