Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2d30c031d | ||
|
|
9dc4ef7bce |
@@ -8,7 +8,7 @@ using SimApi.Exceptions;
|
||||
|
||||
namespace SimApi.Helpers;
|
||||
|
||||
public class SimApiHttpClient(string? appId, string appKey)
|
||||
public class SimApiHttpClient(string? appId, string appKey, bool debug = false)
|
||||
{
|
||||
public string Server { get; init; } = string.Empty;
|
||||
public string SignName { get; init; } = "sign";
|
||||
@@ -17,7 +17,6 @@ public class SimApiHttpClient(string? appId, string appKey)
|
||||
public string? AppIdName { get; init; } = "appId";
|
||||
public string[] SignFields { get; init; } = [];
|
||||
|
||||
|
||||
public T? SignQuery<T>(string url, object? body = null, Dictionary<string, string>? queries = null)
|
||||
{
|
||||
url = Server + url;
|
||||
@@ -68,7 +67,17 @@ public class SimApiHttpClient(string? appId, string appKey)
|
||||
private T? Query<T>(string url, object? req)
|
||||
{
|
||||
var http = new HttpClient();
|
||||
if (debug)
|
||||
{
|
||||
Console.WriteLine($"[HTTPCLIENT请求] {url}\n{SimApiUtil.Json(req)}\n");
|
||||
}
|
||||
|
||||
var resp = http.PostAsJsonAsync(url, req).Result;
|
||||
if (debug)
|
||||
{
|
||||
Console.WriteLine($"[HTTPCLIENT响应] {resp.Content.ReadAsStringAsync().Result}\n");
|
||||
}
|
||||
|
||||
var res = resp.Content.ReadFromJsonAsync<SimApiBaseResponse<T>>().Result;
|
||||
if (res == null)
|
||||
{
|
||||
|
||||
+1
-2
@@ -122,12 +122,12 @@ public static class SimApiExtensions
|
||||
Description = group.Description
|
||||
});
|
||||
}
|
||||
|
||||
x.CustomSchemaIds(type => type.FullName?.Replace("+", "."));
|
||||
x.OperationFilter<SimApiResponseOperationFilter>();
|
||||
x.OperationFilter<SimApiSignOperationFilter>();
|
||||
x.OperationFilter<AesBodyOperationFilter>();
|
||||
x.SchemaFilter<GlobalDynamicObjectSchemaFilter>();
|
||||
x.DocumentFilter<RemoveEmptyTagsFilter>();
|
||||
if (simApiOptions.EnableSimApiAuth)
|
||||
{
|
||||
x.OperationFilter<SimApiAuthOperationFilter>();
|
||||
@@ -392,7 +392,6 @@ public static class SimApiExtensions
|
||||
x.SwaggerEndpoint($"/swagger/{group.Id}.json", name: group.Name);
|
||||
}
|
||||
|
||||
x.EnableValidator();
|
||||
x.SupportedSubmitMethods(docOptions.SupportedMethod);
|
||||
x.DisplayRequestDuration();
|
||||
});
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
using Microsoft.OpenApi;
|
||||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||
using System.Linq;
|
||||
|
||||
namespace SimApi.SwaggerFilters;
|
||||
|
||||
public class RemoveEmptyTagsFilter : IDocumentFilter
|
||||
{
|
||||
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
|
||||
{
|
||||
// 步骤1:收集所有有接口的 Tag 名称
|
||||
var tagsWithOperations = swaggerDoc.Paths.Values
|
||||
.SelectMany(path => path.Operations.Values)
|
||||
.SelectMany(op => op.Tags.Select(t => t.Name))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
// 步骤2:移除无接口的空 Tag
|
||||
var emptyTags = swaggerDoc.Tags.Where(t => !tagsWithOperations.Contains(t.Name)).ToList();
|
||||
foreach (var tag in emptyTags)
|
||||
{
|
||||
swaggerDoc.Tags.Remove(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user