自动与手动 WebApi 客户端生成

Automatic vs manual WebApi client generation

我计划为现有的 Restful API 创建一个客户端,并选择手动或自动使用 Autorest 或 Swagger codegen 等工具创建客户端。
两种方式的优缺点是什么?
自动生成客户端有什么缺点吗?

事实上,我认为没有理由不使用代码生成器。

我建议您查看生成器的未解决问题(例如 https://github.com/swagger-api/swagger-codegen/issues

一般来说,关于外部代码生成,我会想到一件事。如果您使用 style cop 或任何其他编码风格验证器,则可能是生成的代码与您定义的编码风格规则不匹配。

试试吧,你会节省很多时间。

由于您想在 C# 中执行此操作,因此您可能需要查看 Swashbuckle,它包含一个 swagger 生成器和 Swagger-UI。

对于客户端,您可以使用诸如 AutoRest 之类的工具来生成 C#、Java 等,用于客户端的代码来自 swagger.json.

如果您正在使用 jQuery 或 Angular 2+ 开发 C# 客户端或 TypeScript 客户端,替代方案 ASP.NET Web API Client Generators 可能比 SDLC 期间的 swagger 工具链更方便、开销更少。

OpenAPI Generator试一试。对于 C#,请按照以下说明通过 3 个步骤生成 API 个客户端(.NET Core):

  1. 下载 Java JAR (https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.1.0-SNAPSHOT/openapi-generator-cli-4.1.0-20190729.024538-72.jar)
  2. 将 JAR 重命名为 "openapi-generator-cli.jar"
  3. 运行 以下命令为 Petstore API (https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml) 生成 C# .NET Core API 客户端:

Mac/Linux:

$ java -jar openapi-generator-cli.jar generate -g csharp-netcore -i https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml -o /var/tmp/csharp-netcore/

Windows:

$ java -jar openapi-generator-cli.jar generate -g csharp-netcore -i https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml -o C:\tmp\csharp-netcore