diff --git a/HttpClientStudy.Core/HttpClientStudy.Core.csproj b/HttpClientStudy.Core/HttpClientStudy.Core.csproj index 17a26c4..d8e431a 100644 --- a/HttpClientStudy.Core/HttpClientStudy.Core.csproj +++ b/HttpClientStudy.Core/HttpClientStudy.Core.csproj @@ -18,4 +18,8 @@ + + + + diff --git a/HttpClientStudy.Core/HttpRequests/HttpRequestContents.cs b/HttpClientStudy.Core/HttpRequests/HttpRequestContents.cs index 4b15b77..e99823b 100644 --- a/HttpClientStudy.Core/HttpRequests/HttpRequestContents.cs +++ b/HttpClientStudy.Core/HttpRequests/HttpRequestContents.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace HttpClientStudy.Core.HttpRequests +namespace HttpClientStudy.Core.HttpRequests { /// /// Http 请求内容 diff --git a/HttpClientStudy.Core/HttpRequests/HttpRequestParameters.cs b/HttpClientStudy.Core/HttpRequests/HttpRequestParameters.cs index 13307b1..951cd6f 100644 --- a/HttpClientStudy.Core/HttpRequests/HttpRequestParameters.cs +++ b/HttpClientStudy.Core/HttpRequests/HttpRequestParameters.cs @@ -8,8 +8,30 @@ namespace HttpClientStudy.Core.HttpRequests { /// /// Http 请求参数 + /// + /// + /// Url 参数 + /// 参数拼接在请求的Url中 + /// + /// + /// 路由参数 + /// 参数在请求路由中 + /// + /// + /// 请求头参数 + /// 参数在请求头中 + /// + /// + /// 请求体参数 + /// 参数在请求体中 + /// + /// /// + /// + /// 请求体参数,
放入单独类 + ///
public class HttpRequestParameters { + } } diff --git a/HttpClientStudy.Core/UseJsonInHttp.cs b/HttpClientStudy.Core/UseJson/UseJsonInHttp.cs similarity index 85% rename from HttpClientStudy.Core/UseJsonInHttp.cs rename to HttpClientStudy.Core/UseJson/UseJsonInHttp.cs index 7ee91ab..1216030 100644 --- a/HttpClientStudy.Core/UseJsonInHttp.cs +++ b/HttpClientStudy.Core/UseJson/UseJsonInHttp.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace HttpClientStudy.Core +namespace HttpClientStudy.Core.UseJson { /// /// Http中使用Json diff --git a/HttpClientStudy.Model/BaseResult.cs b/HttpClientStudy.Model/BaseResult.cs new file mode 100644 index 0000000..5858836 --- /dev/null +++ b/HttpClientStudy.Model/BaseResult.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HttpClientStudy.Model +{ + /// + /// API 返回基类 + /// + public class BaseResult + { + /// + /// 接口返回代码 + /// + public int Code { get; set; } + + /// + /// 接口返回说明信息 + /// + public string? Message { get; set; } + + /// + /// 接口返回数据 + /// + public object? Data { get; set; } = string.Empty; + } + + /// + /// API 泛型返回基类 + /// + /// + public class BaseResult : BaseResult + { + /// + /// 创建返回基数 + /// + /// 泛型数据 + /// 编码 + /// 说明信息 + /// + public static BaseResult Create(T? data = default, int code = 0, string message = "") + { + return new BaseResult { Data = data, Code = code, Message = message }; + } + + /// + /// 泛型返回核心数据 + /// + public new T? Data { get; set; } + } +} diff --git a/HttpClientStudy.WebApp/BaseResult.cs b/HttpClientStudy.Model/BaseResultUtil.cs similarity index 68% rename from HttpClientStudy.WebApp/BaseResult.cs rename to HttpClientStudy.Model/BaseResultUtil.cs index 1407778..018d936 100644 --- a/HttpClientStudy.WebApp/BaseResult.cs +++ b/HttpClientStudy.Model/BaseResultUtil.cs @@ -1,52 +1,11 @@ -using System.Linq.Expressions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; -namespace HttpClientStudy.WebApp +namespace HttpClientStudy.Model { - /// - /// API 返回基类 - /// - public class BaseResult - { - /// - /// 接口返回代码 - /// - public int Code { get; set; } - - /// - /// 接口返回说明信息 - /// - public string? Message { get; set; } - - /// - /// 接口返回数据 - /// - public object? Data { get; set; } = string.Empty; - } - - /// - /// API 泛型返回基类 - /// - /// - public class BaseResult : BaseResult - { - /// - /// 创建返回基数 - /// - /// 泛型数据 - /// 编码 - /// 说明信息 - /// - public static BaseResult Create(T? data = default, int code = 0, string message = "") - { - return new BaseResult { Data = data, Code = code, Message = message }; - } - - /// - /// 泛型返回核心数据 - /// - public new T? Data { get; set; } - } - /// /// API返回基类 工具类 /// @@ -55,7 +14,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型返回基类 /// - public static BaseResult Create(TData data, int code = 0, string message = "") + public static BaseResult Create(TData data, int code = 0, string message = "") { return new BaseResult() { Data = data, Code = code, Message = message }; } @@ -63,7 +22,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型成功返回基类 /// - public static BaseResult Success() + public static BaseResult Success() { return Success(default, 1, "成功"); } @@ -79,7 +38,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型成功返回基类 /// - public static BaseResult Success(TData? data, string message) + public static BaseResult Success(TData? data, string message) { return Success(data, 1, message); } @@ -87,7 +46,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型成功返回基类 /// - public static BaseResult Success(TData? data, int code, string message) + public static BaseResult Success(TData? data, int code, string message) { return new BaseResult() { Data = data, Code = code, Message = message }; } @@ -95,7 +54,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型错误返回基类 /// - public static BaseResult Error() + public static BaseResult Error() { return Error(default, 0, "错误"); } @@ -103,7 +62,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型错误返回基类 /// - public static BaseResult Error(TData? data) + public static BaseResult Error(TData? data) { return Error(data, 0, "错误"); } @@ -111,7 +70,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型错误返回基类 /// - public static BaseResult Error(TData? data, int code = 0, string message = "错误") + public static BaseResult Error(TData? data, int code = 0, string message = "错误") { return new BaseResult() { Data = data, Code = code, Message = message }; } @@ -127,7 +86,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型失败返回基类 /// - public static BaseResult Fail(TData? data) + public static BaseResult Fail(TData? data) { return Fail(data, 0, "失败"); } @@ -135,7 +94,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型失败返回基类 /// - public static BaseResult Fail(TData? data, int code = 0, string message = "失败") + public static BaseResult Fail(TData? data, int code = 0, string message = "失败") { return new BaseResult() { Data = data, Code = 0, Message = "失败" }; } @@ -145,7 +104,7 @@ namespace HttpClientStudy.WebApp /// public static BaseResult Exception(Exception ex) { - return Exception(ex, default,0); + return Exception(ex, default, 0); } /// @@ -155,7 +114,7 @@ namespace HttpClientStudy.WebApp /// /// /// - public static BaseResult Exception(Exception ex, TData? data) + public static BaseResult Exception(Exception ex, TData? data) { return Exception(ex, data, 0); } @@ -163,7 +122,7 @@ namespace HttpClientStudy.WebApp /// /// 创建 泛型异常返回基类 /// - public static BaseResult Exception(Exception ex, TData? data, int code = 0) + public static BaseResult Exception(Exception ex, TData? data, int code = 0) { return new BaseResult() { Data = data, Code = code, Message = $"异常:{ex.Message}" }; } diff --git a/HttpClientStudy.UnitTest/GlobalUsings.cs b/HttpClientStudy.UnitTest/GlobalUsings.cs index 7b1500a..a3c1bb8 100644 --- a/HttpClientStudy.UnitTest/GlobalUsings.cs +++ b/HttpClientStudy.UnitTest/GlobalUsings.cs @@ -20,6 +20,9 @@ global using Xunit.Serialization; global using HttpClientStudy.Model; global using HttpClientStudy.Core; +global using HttpClientStudy.Core.UseJson; +global using HttpClientStudy.Core.HttpRequests; +global using HttpClientStudy.Core.HttpResponses; global using HttpClientStudy.Service; diff --git a/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj b/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj index 844dc0d..9aecc3c 100644 --- a/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj +++ b/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj @@ -31,11 +31,10 @@ - - - - - + + + + diff --git a/HttpClientStudy.UnitTest/HttpClients/HttpClientQuestTest.cs b/HttpClientStudy.UnitTest/HttpClients/HttpClientQuestTest.cs index e20cc5c..673aabe 100644 --- a/HttpClientStudy.UnitTest/HttpClients/HttpClientQuestTest.cs +++ b/HttpClientStudy.UnitTest/HttpClients/HttpClientQuestTest.cs @@ -53,7 +53,7 @@ namespace HttpClientStudy.UnitTest.HttpClients { HttpClient httpClient = new HttpClient(); - var responseMessage = await httpClient.GetAsync(TestConfig.WebApiBaseUrl + "/api/account/ping"); + var responseMessage = await httpClient.GetAsync(TestConfig.WebApiBaseUrl + "/api/health"); responseMessage.EnsureSuccessStatusCode(); } @@ -68,7 +68,7 @@ namespace HttpClientStudy.UnitTest.HttpClients }; for (int i = 0; i < 100; i++) { - var responseMessage = await httpClient.GetAsync("/api/account/ping"); + var responseMessage = await httpClient.GetAsync("/api/health"); responseMessage.EnsureSuccessStatusCode(); } diff --git a/HttpClientStudy.UnitTest/HttpClients/PipelineClientTest.cs b/HttpClientStudy.UnitTest/HttpClients/PipelineClientTest.cs index 32b2a65..fd45187 100644 --- a/HttpClientStudy.UnitTest/HttpClients/PipelineClientTest.cs +++ b/HttpClientStudy.UnitTest/HttpClients/PipelineClientTest.cs @@ -31,7 +31,7 @@ namespace HttpClientStudy.UnitTest.HttpClients //构造中传入管道对象 HttpClient httpClient = new HttpClient(handler); - var sd = await httpClient.GetAsync(TestConfig.WebApiBaseUrl + "/api/account/ping"); + var sd = await httpClient.GetAsync(TestConfig.WebApiBaseUrl + "/api/health"); var contentText = await sd.Content.ReadAsStringAsync(); _logger.WriteLine(contentText); @@ -42,7 +42,7 @@ namespace HttpClientStudy.UnitTest.HttpClients { HttpClient client = new PipelineHttpClient().CreateHttpClient(); - var r = await client.GetAsync(TestConfig.WebApiBaseUrl + "/api/account/ping"); + var r = await client.GetAsync(TestConfig.WebApiBaseUrl + "/api/health"); r.EnsureSuccessStatusCode(); } } diff --git a/HttpClientStudy.WebApp/Controllers/AccountController.cs b/HttpClientStudy.WebApp/Controllers/AccountController.cs index 7d68aa9..5a7beea 100644 --- a/HttpClientStudy.WebApp/Controllers/AccountController.cs +++ b/HttpClientStudy.WebApp/Controllers/AccountController.cs @@ -26,20 +26,6 @@ namespace HttpClientStudy.WebApp.Controllers /// public AccountController() { } - /// - /// Ping 测试接口 - /// - /// - /// Ping - /// - /// - [HttpGet] - public IActionResult Ping() - { - - return Ok("pong"); - } - /// /// 获取Token /// diff --git a/HttpClientStudy.WebApp/GlobalUsings.cs b/HttpClientStudy.WebApp/GlobalUsings.cs new file mode 100644 index 0000000..9acbf18 --- /dev/null +++ b/HttpClientStudy.WebApp/GlobalUsings.cs @@ -0,0 +1,25 @@ +global using System; +global using System.Linq; +global using System.Text; +global using System.Threading.Tasks; +global using System.Collections.Generic; + +global using System.Net; +global using System.Net.Mime; +global using System.Net.Http; +global using System.Net.Http.Json; +global using System.Net.Http.Headers; + + +global using HttpClientStudy.Model; + +global using HttpClientStudy.Core; +global using HttpClientStudy.Core.UseJson; +global using HttpClientStudy.Core.HttpRequests; +global using HttpClientStudy.Core.HttpResponses; + +global using HttpClientStudy.Service; + +global using HttpClientStudy.WebApp; +global using HttpClientStudy.WebApp.Models; +global using HttpClientStudy.WebApp.Controllers; \ No newline at end of file diff --git a/HttpClientStudy.WebApp/HealthCheck.cs b/HttpClientStudy.WebApp/HealthCheck.cs new file mode 100644 index 0000000..b43d4a3 --- /dev/null +++ b/HttpClientStudy.WebApp/HealthCheck.cs @@ -0,0 +1,21 @@ +using Microsoft.Extensions.Diagnostics.HealthChecks; + +namespace HttpClientStudy.WebApp +{ + /// + /// 健康检查 + /// + public class HealthCheck : IHealthCheck + { + /// + /// 健康检查该方法 + /// + /// 健康检查上下文 + /// 取消令牌 + /// + public Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) + { + return Task.FromResult( HealthCheckResult.Healthy("ok")); + } + } +} diff --git a/HttpClientStudy.WebApp/Program.cs b/HttpClientStudy.WebApp/Program.cs index 033bb86..51d6e76 100644 --- a/HttpClientStudy.WebApp/Program.cs +++ b/HttpClientStudy.WebApp/Program.cs @@ -164,6 +164,9 @@ namespace HttpClientStudy.WebApp //Ȩ builder.Services.AddAuthorization(); + // + builder.Services.AddHealthChecks(); + //ͨ builder.Services.AddScoped(provider => new Account() { Id = 0, Name = "עʾ", Password = "123456", Role = "IoC" }); @@ -171,8 +174,9 @@ namespace HttpClientStudy.WebApp #endregion var app = builder.Build(); - + #region Httpܵ + app.MapHealthChecks("api/health"); app.UseSwagger(); app.UseSwaggerUI(setup => diff --git a/HttpClientStudy.WebApp/StartWebApi.bat b/HttpClientStudy.WebApp/StartWebApi.bat new file mode 100644 index 0000000..23e84d0 --- /dev/null +++ b/HttpClientStudy.WebApp/StartWebApi.bat @@ -0,0 +1,3 @@ +:: Launch WebApi project for unit testing +dotnet run --project %~dp0/HttpClientStudy.WebApp.csproj + diff --git a/HttpClientStudy.WebApp/WebApp.http b/HttpClientStudy.WebApp/WebApp.http index 93ed8b9..76e715c 100644 --- a/HttpClientStudy.WebApp/WebApp.http +++ b/HttpClientStudy.WebApp/WebApp.http @@ -1,6 +1,6 @@ @HttpClientStudy.WebApp_HostAddress = http://localhost:5189 -GET {{HttpClientStudy.WebApp_HostAddress}}/weatherforecast/ +GET {{HttpClientStudy.WebApp_HostAddress}}/api/health Accept: application/json ###