当前位置: 首页 > 知识库问答 >
问题:

如何为每个Swagger请求添加查询参数?

华良才
2023-03-14

我有一个使用. NET 6 Web API的应用程序。一旦用户登录到应用程序,关于该用户的基于小上下文的信息被附加到查询参数。

API中AuthPolicy的一部分是,当调用endpoint时,这些查询参数必须存在,即使该endpoint没有使用它们。

例如,此 SaveClient 终结点具有在请求正文中传递的实际输入,但 AuthPolicy 要求查询参数存在,即使未使用它也是如此。

有效EX:SaveClient?客户端Id=1

无效的EX: SaveClient

有没有办法让Swagger将查询参数硬编码到它的请求URL?

共有1个答案

凤安然
2023-03-14

我发现可以扩展< code>IOperationFilter,它的< code>Apply方法可以向每个endpoint添加参数。

public class ClientFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context) 
    {
        if (operation.Parameters is null)
        {
             operation.Parameters = new List<OpenApiParameter>();
        }

        if (!operation.Parameters.Any(x => x.Name.Equals("clientId", StringComparison.OrdinalIgnoreCase)))
        {
             operation.Parameters.Add(new OpenApiParameter()
             {
                 Name = "clientId"
                 In = ParameterLocation.Query,
                 Description = "ClientId Parameter",
                 Required = true,
             };
        }
    }
}

从这里,您可以在Startup.cs中添加此OperationFilter:

services.AddSwaggerGen(c =>
{
    c.OperationFilter<ClientFilter>();
}
 类似资料:
  • 要使用API,用户需要进行身份验证,一个SESSIONID cookie被添加到他的浏览器中,该cookie将用于请求sessionToken查询参数。 我怎样才能告诉 Swagger 每个请求都需要一个会话令牌查询参数?我可以添加全局查询参数吗?

  • 问题内容: 我需要向Retrofit 2.0.0-beta2库发出的每个请求添加查询参数。我为Retrofit 1.9 找到了此解决方案,但是如何添加最新的库版本? 我的界面: 客户: 问题答案: 为了完整起见,以下是完整的代码,您需要使用OkHttp-Interceptor向每个Retrofit 2.x请求中添加参数:

  • 我已经从其中一个服务复制了swagger.json文件,并想将其导入到Postman collection中

  • 我用的是Jooq3.10。我想为每个选择、更新和删除查询添加具有动态值的默认条件。 例1: 我如何做到这一点?

  • 本文向大家介绍java swagger ui 添加header请求头参数的方法,包括了java swagger ui 添加header请求头参数的方法的使用技巧和注意事项,需要的朋友参考一下 我用到的swagger 主要有三款产品,swagger editor,swagger ui 和swagger codegen。 swagger editor:主要是一个本地客户端,用来自己添加api,自己来测

  • 我有以下配置: 我找到了解决方法——用以下方法标记每个独立endpoint: 但我不喜欢做这种重复的工作。 是否有一种方法可以使每个其他端都实现全球化?