为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项目也是没办法直接使用的。

bcdb44a14dfc4a482fe53ab270294481.png

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

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

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

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

51bdfa564cb20b7c394da9251cca7a4b.png

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

897a0caf0e51fbefe568bdb1638dceb8.png

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

代码非常简单

b6d56511c0a64b94f8e7d79a248413f1.png

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

1155f8c8245d5e622481dd5ecb97672e.png

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

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

207ab9c879d3ea14b7f200a2e93965d4.png

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

3f12e28a620a2f35775e8c4c843f62a7.png

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

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

af1a6aff83c8cdb29d6361da6212ad20.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#项目代码规范

目的 1.方便代码的交流和维护。 2.不影响编码的效率,不与大众习惯冲突。 3.使代码更美观、阅读更方便。 4.使代码的逻辑更清晰、更易于理解。 在C#中通常使用的两种编码方式如下 Camel(驼峰式): 大小写形式-除了第一个单词,所有单…

.NET MAUI实战 FolderPicker

1.概要最近在迁移 GeneralUpdate.Tool的时候需要用到文件夹选择,在MAUI中可以使用FolderPicker进行选择。注意,和上篇文章的文件选择不一样。因为在.NET MAUI中目前还没有傻瓜式直接可用的FolderPicker供开发者使用所以需要自己动手做一些修改。完整示例…

h5外卖源码php_校园食堂外卖APP走红 更多APP定制开发上一品威客网

近日,西安一高校推出了一款校园食堂外卖APP走红网络。该APP涵盖学校食堂的所有饭菜,并可给该校的师生提供校园食堂饭菜外卖服务。饭菜价格与食堂统一,且仅供该校内的师生使用。 目前开发校园外卖订餐系统可谓是一个较热门的创业项目&#xff…

微信自定义tabbar有小红点_自定义微信小程序tabBar组件上边框的颜色

背景:在微信小程序的实际开发过程中,有时候我们需要修改微信小程序提供的 tabBar 组件顶部边框的颜色,以满足项目需求解决方案:方式一:通过tabBar组件自带的 borderStyle 属性来控制边框的颜色,将边框的颜色…

又一批优质.NET6实战项目,面临永久下线...

多好的实战项目大家抓紧时间实操起来呀移动电商实战这次能上岸,最重要的是这个Vue3VantUI.NET6SqlSugar移动电商实战,全部都是最新最热的技术栈,写上简历后面试基本上都是问的这块儿内容。我先给大家看看项目的UI。项目UI全套实战源码这个电商…

laravel 配置微信公众号时{errcode:-106,errmsg:token check fail}

一、问题描述 做微信授权登录时,遇到的一个坑,提示配置失败,F12,响应为 errcode":-106,"errmsg":"token check fail 二、解决方案: 注:宗旨就是让微信能够访问你填写的网址&#xff…

电商企业怎样用好大数据

电商企业怎样用好大数据 大数据正在促生新的蓝海,催生新的经济增长点,正在成为政府和企业竞争的新焦点。2012年,瑞士达沃斯论坛发布《大数据,大影响》报告,称“数据已经成为一种新的经济资产类别,就像货币或…

同步方法 调用异步防范_Spring一个注解实现方法的异步调用,再也不用单开线程了...

介绍同步调用先来演示一下什么是同步调用测试方法输出如下doTaskOne start 1566121320372doTaskOne end 1566121321373doTaskTwo start 1566121321373doTaskTwo end 1566121322374可以看到方法一执行完毕,方法二才会执行异步调用不返回值1.Spring Boot启动类上加Ena…

【源码探索】.NET中的List,是哪种数据结构

“当你提出疑问并开始思考时&#xff0c;答案就离你不远了”图片&#xff1a;奥森公园的向日葵 拍摄于2022年7月23日 摄影师&#xff1a;刘先生01—问题缘起严格来说应该是List<T>&#xff0c;因为.NET的核心基础类库中&#xff0c;并没有List&#xff0c;作为泛型类型的…

dpdk对虚拟化的支持调研

目录&#xff1a; 虚拟化dpdk的实现研究 virtiovhostSR-IOV热迁移相关研究拓展本文记录近期对dpdk在虚拟化和云计算领域应用的研究成果&#xff0c;内容梳理如下。 虚拟化 虚拟化&#xff0c;抽象来说&#xff0c;就是将物理资源逻辑化。具体来说&#xff0c;虚拟技术的实现是在…

隐藏键盘_三星新专利:带有隐藏键盘的三折叠屏手机

10月31日消息 众所周知&#xff0c;三星现已推出四款折叠屏机型(Fold、Fold 2、Z Flip、W20)&#xff0c;而此前多有传言表示三星下一代折叠屏机型(以 Galaxy Z Fold 3 代称)将在目前折叠屏手机的基础上增加 S Pen&#xff0c;而昨日公布的一份专利也侧面辅证了这一说法。此外&…

Blazor学习之旅(3)实现一个Todo应用

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。最近在学习Blazor做全栈开发&#xff0c;因此根据老习惯&#xff0c;我会将我的学习过程记录下来&#xff0c;一来体系化整理&#xff0c;二来作为笔记供将来翻看。本篇&#xff0c;我们通过一个简单的Todo示例应用…

JavaScript 省市级联效果

为什么80%的码农都做不了架构师&#xff1f;>>> JavaScript 省市级联效果 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <html xmlns"http…

20分钟完成Mac上的 LNMP 环境部署,优雅·高效开发(Docker方式)

一、前言 对于很多开发者来说&#xff0c;突然转到在 mac 系统开发&#xff0c;可能会非常难受&#xff0c;主要有以下几个原因 1、mac 上安装软件程序坑多&#xff0c;比如安装 PHP、Nginx&#xff0c;会存在很多使用 linux 或 windows 时没有遇到过的坑 2、对 mac 系统不熟…

可编程交换时代就在这里

在第一批网络处理器推出20年后&#xff0c;我们正在向完全可编程数据平面迈进&#xff0c;网络运营商在虚拟化方面的努力推动了这一趋势的发展。 大多数物理网络系统正在被运行在网络核心和边缘的服务器上的虚拟网络功能&#xff08;VNF&#xff09;取代。这些服务器一般采用通…

调试 不弹出 小米_时隔六年,小米NFC碰碰贴复活,碰一下自动亮灯、联网、投屏...

有朋友问我&#xff0c;NFC除了刷门禁、刷公交、离线支付外&#xff0c;还能干什么&#xff1f;实际上NFC的应用场景远不止于此&#xff0c;今天就带大家开开眼界。今年是小米十周年&#xff0c;各种酷玩新品不断&#xff0c;其中“小米碰碰贴2”就是一款便宜又好玩的产品。小米…

微信小程序把玩(三)tabBar底部导航

为什么80%的码农都做不了架构师&#xff1f;>>> tabBar相对而言用的还是比较多的&#xff0c;但是用起来并没有难&#xff0c;在app.json中配置下tabBar即可&#xff0c;注意tabBar至少需要两个最多五个Item选项 主要属性&#xff1a; 对于tabBar整体属性设置&…

WPF 之列表分页控件

WPF 之列表分页控件控件名&#xff1a;WindowAcrylicBlur作者&#xff1a; WPFDevelopersOrg - 黄佳 | 驚鏵原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40。Visual Studio 2022。项目使用 MIT 开源许可协议。新建Paginat…

禁止sethc.exe运行 防止3389的sethc后门

废话&#xff1a;在土司看到的一篇文章,发私信给那个哥们儿说让不让转载,结果还没回复我就在百度看到相同的文章。他自己也是转载的。这哥们儿ID迟早被ban 文章转载自:http://www.jb51.net/hack/64484.html 点“开始”&#xff0c;在“运行”中敲入gpedit.msc依次展开“用户配置…

Mac 与虚拟机中的linux集群共享文件目录设置

一、环境介绍 本机&#xff1a;Macos Big Sur系统 虚拟机软件&#xff1a;vmware-fusion 虚拟机上虚拟的linux - centos7 系统 二、实现的效果 在mac上创建一个/Users/SH-Server/vm-vagrant目录&#xff0c;作为之后和虚拟机linux系统 /data 文件夹的共享目录。 我们最终想…