在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 @ 2022-03-29 11:49  IWing  阅读(140)  评论(0编辑  收藏  举报