From e1441e1a14841f322af3e1ca65490fb8b7993970 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 12 八月 2025 16:06:55 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs | 37 +++++++++++++++++++++++++++++-------- 1 files changed, 29 insertions(+), 8 deletions(-) diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs index db7a2db..dd0b166 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs @@ -1,4 +1,5 @@ -锘縰sing Consul; +锘縰sing Azure; +using Consul; using Furion; using Furion.FriendlyException; using Furion.HttpRemote; @@ -44,8 +45,8 @@ var jsonResourceModels = await distributedCache.GetStringAsync($"ResourceModel|{requestTypeFullName}"); var resource = jsonResourceModels.JsonTo<ResourceModel>(); - var domain = await GetHealthyServiceDomain(resource); - var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), $"{domain}{resource.Route}"); + var url = await GetUrl(resource.ServiceName, resource.Route); + var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), url); if (resource.Method == EnumResourceMethod.Get) builder = builder.WithQueryParameters(request); else @@ -56,22 +57,42 @@ return response; } + public async Task<string> SendHttpAsync(Resource resource, string request, IResourceHttpProvider provider = null) + { + var url = await GetUrl(resource.ServiceName, resource.Route); + var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), url); + if (resource.Method == EnumResourceMethod.Get) + builder = builder.WithQueryParameters(request); + else + builder = builder.SetJsonContent(request); + provider = provider ?? new DefaultResourceHttpProvider(); + builder = provider.AddAuthentication(builder); + var response = await provider.SendAsStringAsync(httpRemoteService, builder); + return response; + } + + public async Task<string> GetUrl(string serviceName, string route) + { + var domain = await GetHealthyServiceDomain(serviceName); + return $"{domain}{route}"; + } + /// <summary> /// 鑾峰彇鍋ュ悍鏈嶅姟鍩熷悕 /// </summary> - /// <param name="resource"></param> + /// <param name="serviceName"></param> /// <returns></returns> - public async Task<string> GetHealthyServiceDomain(ResourceModel resource) + public async Task<string> GetHealthyServiceDomain(string serviceName) { - var queryResult = await consulClient.Health.Service(resource.ServiceName, null, true); + var queryResult = await consulClient.Health.Service(serviceName, null, true); if (queryResult.StatusCode != System.Net.HttpStatusCode.OK) - throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔resource.Service}"); + throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}"); var domains = queryResult.Response .Select(s => $"http://{s.Service.Address}:{s.Service.Port}") .ToList(); if (domains.IsNull()) - throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔resource.Service}"); + throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}"); // 杞閫夋嫨瀹炰緥 int randomIndex = new Random().Next(domains.Count); return domains[randomIndex]; -- Gitblit v1.9.1