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

如何在Swagge发送自定义头和请求吗

楚嘉玉
2023-03-14

我在API中有一些endpoint-<代码>/用户/登录 ,<代码>/产品

在Swagger用户界面中,我将电子邮件密码发送到/user/login,作为响应,我收到一个令牌字符串。

然后,我可以从响应中复制令牌,并希望将其用作请求中的授权头值(如果存在的话),并将其用作/products

我应该手动创建一个文本输入上的某个地方吗

共有3个答案

姬飞昂
2023-03-14
匿名用户

在<code>ASP。NET核心2 Web API,使用Swashback。在AspNetCore包2.1.0中,实现IDocumentFilter:

SwaggerSecurityRequirementsDocumentFilter.cs

using System.Collections.Generic;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace api.infrastructure.filters
{
    public class SwaggerSecurityRequirementsDocumentFilter : IDocumentFilter
    {
        public void Apply(SwaggerDocument document, DocumentFilterContext context)
        {
            document.Security = new List<IDictionary<string, IEnumerable<string>>>()
            {
                new Dictionary<string, IEnumerable<string>>()
                {
                    { "Bearer", new string[]{ } },
                    { "Basic", new string[]{ } },
                }
            };
        }
    }
}

在Startup.cs,定义和配置安全

public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c =>
    {
        // c.SwaggerDoc(.....

        c.AddSecurityDefinition("Bearer", new ApiKeyScheme()
        {
            Description = "Authorization header using the Bearer scheme",
            Name = "Authorization",
            In = "header"
        });

        c.DocumentFilter<SwaggerSecurityRequirementsDocumentFilter>();
    });
}

在 Swagger UI 中,单击“授权”按钮并设置令牌的值。

结果:

curl -X GET "http://localhost:5000/api/tenants" -H "accept: text/plain" -H "Authorization: Bearer ABCD123456"

夏弘文
2023-03-14

您可以在请求中添加一个header参数,Swagger-UI会将它显示为一个可编辑的文本框:

swagger: "2.0"
info:
  version: 1.0.0
  title: TaxBlaster
host: taxblaster.com
basePath: /api
schemes:
- http

paths:

  /taxFilings/{id}:

    get:
      parameters:
      - name: id
        in: path
        description: ID of the requested TaxFiling
        required: true
        type: string
      - name: auth
        in: header
        description: an authorization header
        required: true
        type: string
      responses:
        200:
          description: Successful response, with a representation of the Tax Filing.
          schema:
            $ref: "#/definitions/TaxFilingObject"
        404:
          description: The requested tax filing was not found.

definitions:
  TaxFilingObject:
    type: object
    description: An individual Tax Filing record.
    properties:
      filingID:
        type: string
      year:
        type: string
      period:
        type: integer
      currency:
        type: string
      taxpayer:
        type: object

您还可以添加一个安全定义<型

swagger: "2.0"
info:
  version: 1.0.0
  title: TaxBlaster
host: taxblaster.com
basePath: /api
schemes:
- http

securityDefinitions:
  api_key:
    type: apiKey
    name: api_key
    in: header
    description: Requests should pass an api_key header.

security: 
 - api_key: []

paths:

  /taxFilings/{id}:

    get:
      parameters:
      - name: id
        in: path
        description: ID of the requested TaxFiling
        required: true
        type: string

      responses:
        200:
          description: Successful response, with a representation of the Tax Filing.
          schema:
            $ref: "#/definitions/TaxFilingObject"
        404:
          description: The requested tax filing was not found.

definitions:
  TaxFilingObject:
    type: object
    description: An individual Tax Filing record.
    properties:
      filingID:
        type: string
      year:
        type: string
      period:
        type: integer
      currency:
        type: string
      taxpayer:
        type: object

<代码> securityDefinitions > < /代码对象定义

安全对象(在Swagger–OpenAPI中称为“安全需求”)将安全方案应用于给定上下文。在我们的例子中,我们将安全需求声明为顶级,从而将其应用于整个API。我们可以选择在单个路径项和/或方法中重写它。

这将是指定您的首选

谷梁博易
2023-03-14

在ASP。NET Web API中,在Swagger UI上传入头的最简单方法是在IOperationFilter接口上实现Apply(…)方法。

添加这个项目:

public class AddRequiredHeaderParameter : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        if (operation.parameters == null)
            operation.parameters = new List<Parameter>();

        operation.parameters.Add(new Parameter
        {
            name = "MyHeaderField",
            @in = "header",
            type = "string",
            description = "My header field",
            required = true
        });
    }
}

在SwaggerConfig中。cs,使用c操作过滤器从上方注册过滤器

public static void Register()
{
    var thisAssembly = typeof(SwaggerConfig).Assembly;

    GlobalConfiguration.Configuration 
        .EnableSwagger(c =>
        {
            c.SingleApiVersion("v1", "YourProjectName");
            c.IgnoreObsoleteActions();
            c.UseFullTypeNameInSchemaIds();
            c.DescribeAllEnumsAsStrings();
            c.IncludeXmlComments(GetXmlCommentsPath());
            c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());


            c.OperationFilter<AddRequiredHeaderParameter>(); // Add this here
        })
        .EnableSwaggerUi(c =>
        {
            c.DocExpansion(DocExpansion.List);
        });
}

 类似资料:
  • 问题内容: 使用urllib2.urlopen(..)时,我想在请求中发送自定义的“ Accept”标头。我怎么做? 问题答案: 不完全的。创建对象实际上并不发送请求,并且Request对象没有方法。(还:是小写字母。)您需要做的就是将用作第一个参数,这将给您您的答复。

  • 如何将自定义标头添加到HttpClient请求?我使用方法发布JSON。我需要添加的自定义标题是 这是我到目前为止所做的:

  • 如何为截击请求设置自定义标题?目前,有一种方法可以为POST请求设置正文内容。我有一个简单的GET请求,但我需要同时传递自定义头。我不知道JsonRequest类如何支持它。有可能吗?

  • 问题内容: 我正在使用一个API,该API需要额外的安全性信息以及HTTP请求作为标头中的元信息发送。是否可以在XMLHttpRequest中设置它们? 问题答案: 是的,请参阅2012年12月6日当前XMLHttpRequest工作草案的“ setRequestHeader()方法” 。

  • 我正试图发送一个授权令牌,但我的服务器不知何故没有接收它。 //service.ts } //endpoint //标记过滤器

  • 我使用django rest框架作为后端,并试图使用请求标头中的令牌来验证角请求,但角没有发送任何标头值。我已经尝试了所有的方法添加头请求 访问控制请求标头:访问控制允许标头、访问控制允许来源、授权、内容类型访问控制请求方法:GET DNT:1来源:http://localhost:4001推荐人:http://localhost:4001/