在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,修改后马上生效的。

posted @   IWing  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示