C# 中使用 NSwag 如何在同一客户端项目中为不同 API 创建多个客户端类
NSwag 生成第二个独立API Client 类操作步骤
你可以根据自己当前使用的NSwag调用方式,对应按以下步骤操作,生成的Client和对应接口会完全独立,不会和第一个API的生成产物冲突:
方式1:使用NSwagStudio图形界面操作
- 打开NSwagStudio,新建一个独立的配置文件(不要直接修改你之前给第一个API用的.nswag配置文件,避免覆盖原有生成内容)
- 在新配置的
OpenAPI/Swagger Specification标签页中,填入第二个API的swagger文档地址/本地json文件路径,点击「Load OpenAPI/Swagger Specification」加载接口定义 - 切换到
CSharp Client标签页:- 把
Namespace设置成和第一个Client不同的命名空间,或者直接修改Client Class Name为区别于第一个Client的名称,比如第一个叫OrderApiClient,第二个可以设置为ProductApiClient - 确认勾选
Generate Interface选项,保留自动生成接口的能力 - 调整
Output File Path为新的文件路径,不要和第一个生成的Client文件路径重复
- 把
- 点击「Generate Files」即可生成完全独立的第二个Client类和对应接口
方式2:使用.NET CLI 命令行操作
- 直接执行全新的生成命令,指定不同的输出参数即可,示例命令如下:
nswag openapi2csclient /input:第二个API的swagger.json地址 /classname:SecondApiClient /namespace:你的业务命名空间 /output:输出文件路径/SecondApiClient.cs /GenerateInterface:true
- 只要
/classname和/output参数和你第一次生成的参数不同,就不会和原有Client冲突
方式3:使用项目内嵌MSBuild集成操作
- 打开你的项目的
.csproj文件,找到你之前配置的第一个API的NSwag生成节点,直接新增一组独立的<OpenApiReference>节点即可,示例配置:
<!-- 原有第一个API的配置 --> <OpenApiReference Include="第一个API的swagger.json" CodeGenerator="NSwagCSharp" Namespace="YourNamespace.Clients" ClassName="FirstApiClient" OutputPath="Clients/FirstApiClient.cs" Options="/GenerateInterface:true" /> <!-- 新增第二个API的配置 --> <OpenApiReference Include="第二个API的swagger.json" CodeGenerator="NSwagCSharp" Namespace="YourNamespace.Clients" ClassName="SecondApiClient" OutputPath="Clients/SecondApiClient.cs" Options="/GenerateInterface:true" />
- 保存配置后重新编译项目,就会自动生成两个独立的Client类和对应接口
注意事项
- 两个API的Client类名不要重复,哪怕放在不同命名空间也建议取不同名称避免调用时混淆
- 如果两个API有重名的模型类,建议设置不同的模型命名空间,或者勾选
Generate DTOs下的Prefix DTO class names配置加前缀区分
内容的提问来源于stack exchange,提问作者GregJF
相关产品推荐
相关产品推荐

