在webapi端,快速映射微服务器的服务
有很多时候,我们所编写的微服务是可以被客户端单个调用的,也就是说,要完成某一项业务,只要调用某一个微服务的其中一个方法就可以了,并不需要同时调用多个微服务。
举个例子:
在微服务,我们写了这样一个方法:
public Company[] GetUserCompanies(int userid) //查询当前用户的企业信息
{
var db = this.CurrentDBContext;
var ret = from m in db.Company
from b in db.CompanyMember
where m.id == b.CompanyId && b.UserId == useridselect m;
return ret.ToArray();
}
由于客户端只能访问webapi,所以在webapi的controller里面,我们需要写一个调用这个微服务的方法
[Authorize]
[HttpGet]
public Company[] GetUserCompanies(int userid)
{
using (var client = new MicroServiceClient())
{
var service = client.GetMicroService<UserInfoService>();
return service.GetUserCompanies(userid);
}
}
虽然代码量不大,但是微服务增加一个方法,webapi也要多写一次调用,有点麻烦,其实,在webpai简单配置一下,就可以把客户端请求,转向微服务,而不需要写任何代码
首先webapi工程中引入包:JMS.WebApiDocument
然后,在webapi工程中新增serviceConfig.json 文件,并按下图设置属性:
文件内容如下:
{
"JMS.ServiceRedirects": [
{
"ServiceName": "UserInfoService", //注册的微服务名称
"Description": "用户信息",
"OutputText":true //输出结果不进行 { code:200 , data:XXX } 包装
}
]
}
用app对象,启用前端文档和微服务转发功能
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger, ILogger<ShareFileClient> loggerFile) { //启用jms在线前端文档,http://***/jmsdoc app.UseJMSWebApiDocument(); //让webpai直接转发请求到微服务 ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddJsonFile("serviceConfig.json", optional: true, reloadOnChange: true); app.UseJmsServiceRedirect(builder.Build(), () => new MicroServiceClient(null)); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
这样,前端通过 http://yourhost/jmsdoc 即可打开在线文档,文档里面也详细描述了通过什么url 去访问UserInfoService 这个服务
以后再增加微服务,如果需要webapi直接转发,那么到服务器修改一下serviceConfig.json文件就可以了,不需要重启webapi,修改后马上生效的。
分类:
JMS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)