From 2da5c6be190d8078393eb2df777863931218ad19 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 08 八月 2025 10:16:40 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs | 53 ++++++++++++----------------------------------------- 1 files changed, 12 insertions(+), 41 deletions(-) diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs index 9b51203..d1749ca 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs @@ -42,8 +42,11 @@ /// <typeparam name="TRequest"></typeparam> /// <typeparam name="TResponse"></typeparam> /// <param name="request"></param> + /// <param name="provider"></param> /// <returns></returns> - public static async Task<TResponse> SendHttpAsync<TRequest, TResponse>(TRequest request) + public static async Task<TResponse> SendHttpAsync<TRequest, TResponse>( + TRequest request, + IResourceHttpProvider provider = null) where TRequest : class, new() { var requestTypeFullName = typeof(TRequest).FullName; @@ -52,46 +55,14 @@ .FirstOrDefaultAsync(); var domain = await GetHealthyServiceDomain(resource); var httpRemoteService = App.GetRequiredService<IHttpRemoteService>(); - var token = App.HttpContext.Request.Headers["Authorization"].ToString(); - var refreshToken = App.HttpContext.Request.Headers["X-Authorization"].ToString(); - TResponse response; - switch (resource.Method) - { - case EnumResourceMethod.Get: - response = await httpRemoteService.GetAsAsync<TResponse>( - $"{domain}{resource.Route}", - it => - it.WithQueryParameters(request) - .AddAuthentication(new AuthenticationHeaderValue("Authorization", token)) - .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken))); - break; - case EnumResourceMethod.Post: - response = await httpRemoteService.PostAsAsync<TResponse>( - $"{domain}{resource.Route}", - it => - it.SetJsonContent(request) - .WithHeader("Authorization", token) - .WithHeader("X-Authorization", refreshToken)); - break; - case EnumResourceMethod.Put: - response = await httpRemoteService.PutAsAsync<TResponse>( - $"{domain}{resource.Route}", - it => - it.SetJsonContent(request) - .AddAuthentication(new AuthenticationHeaderValue("Authorization", token)) - .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken))); - break; - case EnumResourceMethod.Delete: - response = await httpRemoteService.DeleteAsAsync<TResponse>( - $"{domain}{resource.Route}", - it => - it.SetJsonContent(request) - .AddAuthentication(new AuthenticationHeaderValue("Authorization", token)) - .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken))); - break; - default: - throw Oops.Oh(EnumErrorCodeType.s400, $"涓嶆敮鎸佽姹傛柟寮弡resource.Method}"); - } + var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), $"{domain}{resource.Route}"); + 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.SendAsAsync<TResponse>(httpRemoteService, builder); return response; } -- Gitblit v1.9.1