Swashbuckle:自定义端点路径 (AspNetCore)
Swashbuckle: Customize endpoint path (AspNetCore)
我有这个设置,我想组织由同一个应用程序提供服务的多个 API
.
对于每个 api 我从子域获取前缀并将其重定向到应用程序服务器,例如:
user.api.example.com/v1/profile --> api.example.com/user/v1/profile
admin.api.example.com/v1/companies --> api.example.com/admin/v1/companies
使用此设置,我需要在生成 swagger json 文件时删除路径前缀(“/user”、“/admin”)。
是否可以配置一个函数来在生成 json 文件之前操纵每个端点的路径?
我只想更改 swagger json 文件中的内容,而不是实际的端点路径!
文档过滤器是满足特定需求的答案:
public class PathPrefixDocumentFilter : IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
var editedPaths = new OpenApiPaths();
foreach(var kv in swaggerDoc.Paths)
{
var newKey = string.Join("/", kv.Key.Split('/').Skip(2));
editedPaths.Add("/"+newKey, kv.Value);
}
swaggerDoc.Paths = editedPaths;
var a = swaggerDoc.Paths;
}
}
我有这个设置,我想组织由同一个应用程序提供服务的多个 API . 对于每个 api 我从子域获取前缀并将其重定向到应用程序服务器,例如:
user.api.example.com/v1/profile --> api.example.com/user/v1/profile
admin.api.example.com/v1/companies --> api.example.com/admin/v1/companies
使用此设置,我需要在生成 swagger json 文件时删除路径前缀(“/user”、“/admin”)。
是否可以配置一个函数来在生成 json 文件之前操纵每个端点的路径?
我只想更改 swagger json 文件中的内容,而不是实际的端点路径!
文档过滤器是满足特定需求的答案:
public class PathPrefixDocumentFilter : IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
var editedPaths = new OpenApiPaths();
foreach(var kv in swaggerDoc.Paths)
{
var newKey = string.Join("/", kv.Key.Split('/').Skip(2));
editedPaths.Add("/"+newKey, kv.Value);
}
swaggerDoc.Paths = editedPaths;
var a = swaggerDoc.Paths;
}
}