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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为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等。

以上是关于为abp vnext生成C#客户端给非abp第三方net程序使用的主要内容,如果未能解决你的问题,请参考以下文章

Abp Vnext Vue3 的版本实现

Abp Vnext Vue3 的版本实现

Abp vNext 使用Mysql数据库

Abp vNext 修改默认表前缀

ABP vNext

abp vNext 使用Mysql 数据库