Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2d30c031d | ||
|
|
9dc4ef7bce |
@@ -8,7 +8,7 @@ using SimApi.Exceptions;
|
|||||||
|
|
||||||
namespace SimApi.Helpers;
|
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 Server { get; init; } = string.Empty;
|
||||||
public string SignName { get; init; } = "sign";
|
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? AppIdName { get; init; } = "appId";
|
||||||
public string[] SignFields { get; init; } = [];
|
public string[] SignFields { get; init; } = [];
|
||||||
|
|
||||||
|
|
||||||
public T? SignQuery<T>(string url, object? body = null, Dictionary<string, string>? queries = null)
|
public T? SignQuery<T>(string url, object? body = null, Dictionary<string, string>? queries = null)
|
||||||
{
|
{
|
||||||
url = Server + url;
|
url = Server + url;
|
||||||
@@ -68,7 +67,17 @@ public class SimApiHttpClient(string? appId, string appKey)
|
|||||||
private T? Query<T>(string url, object? req)
|
private T? Query<T>(string url, object? req)
|
||||||
{
|
{
|
||||||
var http = new HttpClient();
|
var http = new HttpClient();
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[HTTPCLIENT请求] {url}\n{SimApiUtil.Json(req)}\n");
|
||||||
|
}
|
||||||
|
|
||||||
var resp = http.PostAsJsonAsync(url, req).Result;
|
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;
|
var res = resp.Content.ReadFromJsonAsync<SimApiBaseResponse<T>>().Result;
|
||||||
if (res == null)
|
if (res == null)
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-2
@@ -122,12 +122,12 @@ public static class SimApiExtensions
|
|||||||
Description = group.Description
|
Description = group.Description
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
x.CustomSchemaIds(type => type.FullName?.Replace("+", "."));
|
x.CustomSchemaIds(type => type.FullName?.Replace("+", "."));
|
||||||
x.OperationFilter<SimApiResponseOperationFilter>();
|
x.OperationFilter<SimApiResponseOperationFilter>();
|
||||||
x.OperationFilter<SimApiSignOperationFilter>();
|
x.OperationFilter<SimApiSignOperationFilter>();
|
||||||
x.OperationFilter<AesBodyOperationFilter>();
|
x.OperationFilter<AesBodyOperationFilter>();
|
||||||
x.SchemaFilter<GlobalDynamicObjectSchemaFilter>();
|
x.SchemaFilter<GlobalDynamicObjectSchemaFilter>();
|
||||||
|
x.DocumentFilter<RemoveEmptyTagsFilter>();
|
||||||
if (simApiOptions.EnableSimApiAuth)
|
if (simApiOptions.EnableSimApiAuth)
|
||||||
{
|
{
|
||||||
x.OperationFilter<SimApiAuthOperationFilter>();
|
x.OperationFilter<SimApiAuthOperationFilter>();
|
||||||
@@ -392,7 +392,6 @@ public static class SimApiExtensions
|
|||||||
x.SwaggerEndpoint($"/swagger/{group.Id}.json", name: group.Name);
|
x.SwaggerEndpoint($"/swagger/{group.Id}.json", name: group.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
x.EnableValidator();
|
|
||||||
x.SupportedSubmitMethods(docOptions.SupportedMethod);
|
x.SupportedSubmitMethods(docOptions.SupportedMethod);
|
||||||
x.DisplayRequestDuration();
|
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