如何使用 Swashbuckle 定义 OAS3 的链接?

Inx*_*x51 5 swashbuckle asp.net-core openapi

我注意到在 Swagger UI v3 和 OAS3 中,我们现在支持称为“链接”的东西

但我真的不知道是否可以将这个功能与 Swashbuckle 一起使用,如果是……那么如何?一直在网上搜索,并没有找到任何关于这个的东西..

任何人都能够使用与 Swashbuckle 的链接?

小智 2

您可以使用操作过滤器。创建一个实现 IOperationFilter 的类

public class MyLinkFilter : IOperationFilter 
{
Run Code Online (Sandbox Code Playgroud)

在其中选择您要添加链接的响应。

public void Apply(OpenApiOperation operation, OperationFilterContext context)
    var responses = operation.Responses;
    var response = responses.FirstOrDefault(r => r.Key == "200").Value;
Run Code Online (Sandbox Code Playgroud)

然后更新链接属性

response.Links = new Dictionary<string, OpenApiLink>
{
    { 
        "YourKey"
        ,new OpenApiLink {
            OperationId = "YourOperationId",
            Description = ".............",
            Parameters = new Dictionary<string, RuntimeExpressionAnyWrapper>
            {
                {
                    "yourParam", new RuntimeExpressionAnyWrapper
                    {
                        Any = new OpenApiString("$request.path.number")
                    }
                }
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

将您的OperationFilter注册到startup.cs中

services.AddSwaggerGen(options =>
  {
     options.OperationFilter<MyLinkFilter>();
  });
Run Code Online (Sandbox Code Playgroud)

开放API、响应

开放API,链接

最后,您必须实现一种机制来将链接应用到控制器中的良好操作。