为abp vnext生成C#客户端给非abp第三方net程序使用

abp vnext提供了动态C#API客户端和静态C#API客户端来调用abp项目的接口,但是有局限性;要使用动态C#API客户端的项目必须也是ABP vnext的项目。静态C#API客户端也依赖abp的包,如下图为的静态客户端依赖于 Volo.Abp.DependencyInjection、Volo.Abp.Http.Client.ClientProxying等abp包,普通的net web api项目也是没办法直接使用的。

如果非abp的net 项目想调用abp vnext项目的方法应该怎么办呢?可能很多人会想到使用HttpClient来调用,类似于如下方式

伪代码
var client=new HttpClient();
...设置请求地址,请求路径、请求参数
var result=await client.SendAsync(requst);
...解析返回值等

这种方式使用起来非常的繁琐,很不好用。那有没有其他方式就像调用本地方法一样直观又方便的方式呢?

答案是有的,我们将使用NSwagStudio 来动态的生成客户端代码,使用客户端代码非abp的net项目就可以像调用本地方法一样方便的调用abp项目的方法。下载并安装NSwagStudio,安装成功后将后如下图

准备测试的项目,通过abp官网在线创建一个项目名为AbpProject

生成abp项目下载解压后在Application、Contract添加测试使用到的类

代码非常简单

将AbpProject.HttpApi.Host设为启动项目,并启动项目

打开NSwagStudio,设置swagger.json地址,设置输出文件路径,点击"Generate Files"

我们将得到一个AbpProjectClient.cs文件

接线来我们生成一个web api项目,并将AbpProjectClient.cs文件放入该项目:

在控制器中添加测试方法,真正的使用时应该使用HttpClientFactory来创建HttpClinet。

运行web api项目,并通过swagger调用测试方法,测试成功。web api项目调用Abp项目的接口成功并拿到了返回结果,并且不用序列化就能直接使用返回结果。

当然还可以使用其他方式来生成C#客户端,比如[NSwag.CodeGeneration.CSharp](https://www.nuget.org/packages/NSwag.CodeGeneration.CSharp/)、NSwag.MSBuild等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值