gpt4 book ai didi

c# - Swashbuckle IDocumentFilter 实现 - 如何将 ActionDescriptor.MethodInfo 链接到操作

转载 作者:行者123 更新时间:2023-12-04 12:37:43 27 4
gpt4 key购买 nike

  • 项目:ASP Net Core 2.2、Web API
  • 包:Swashbuckle.AspNetCore (4.0.1)

  • 我正在写一个实现 Swashbuckle.AspNetCore.SwaggerGen.IDocumentFilter它在我的 swagger 配置文件中的路径级别添加了 x-summary 值。为此,它需要访问每个 Web 方法的以下两条信息
  • ApiDescription.ActionDescriptor.MethodInfo - 访问方法的属性
  • Operation.Summary - 方法的 Xml 注释

  • 似乎我可以从 context 中获得 #1和来自 swaggerDoc 的 #2提供给 IDocumentFilter 实现,但除了使用路径之外,我找不到链接它们的好方法。

    有没有更整洁的方法?

    我正在做的事情的一个简化示例如下。
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
    // Create a map from path (prepended with "/") to the custom attribute
    var methodsByPath = context.ApiDescriptions
    .ToDictionary(
    m => $"/{m.RelativePath}",
    m => ((ControllerActionDescriptor)m.ActionDescriptor).MethodInfo.GetCustomAttribute<MyCustomAttribute>());

    // Add x-summary to each path
    foreach (var pathItem in swaggerDoc.Paths)
    {
    var customAttribute = methodsByPath[pathItem.Key];

    pathItem.Value.Extensions["x-summary"]
    = GeneratePathDescription(pathItem.Value.Post.Summary, customAttribute);
    }
    }

    string GeneratePathDescription(string methodSummary, MyCustomAttribute attr)
    {
    [snip]
    }

    最佳答案

    关于c# - Swashbuckle IDocumentFilter 实现 - 如何将 ActionDescriptor.MethodInfo 链接到操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59569007/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com