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;
    }
}