Saltar al contenido

Web Api Cómo agregar un parámetro de encabezado para todas las API en Swagger

Hola, tenemos la respuesta a tu búsqueda, has scroll y la encontrarás aquí.

Solución:

Lo que escribió el usuario “GT” es correcto pero no funciona con Swagger 5. Tenemos algunos cambios nuevos:

Desde: Operation para: OpenApiOperation

Desde: IParameter para: OpenApiParameter

Desde: NonBodyParameter para: OpenApiParametery lo más importante es…

Desde: Type = "string" para: Schema = new OpenApiSchema Type = "String"

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
namespace MyAPI

    public class AuthorizationHeaderParameterOperationFilter: IOperationFilter
    
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        
            var filterPipeline = context.ApiDescription.ActionDescriptor.FilterDescriptors;
            var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Filter).Any(filter => filter is AuthorizeFilter);
            var allowAnonymous = filterPipeline.Select(filterInfo => filterInfo.Filter).Any(filter => filter is IAllowAnonymousFilter);

            if (isAuthorized && !allowAnonymous)
            
                if (operation.Parameters == null)
                    operation.Parameters = new List();

                operation.Parameters.Add(new OpenApiParameter 
                
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Description = "access token",
                    Required = true,
                    Schema = new OpenApiSchema
                    
                        Type = "String",
                        Default = new OpenApiString("Bearer ")
                    
                );
            
        
    

Y en Inicio => ConfigureServices => services.AddSwaggerGen()

c.OperationFilter();

Sí, puedes hacerlo mediante la herencia de IOperationFilter

Puede encontrar la respuesta en GitHub aquí: AddRequiredHeaderParameter

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;

public class AddRequiredHeaderParameter : IOperationFilter

    public void Apply(Operation operation, OperationFilterContext context)
    
        if (operation.Parameters == null)
            operation.Parameters = new List();

        operation.Parameters.Add(new NonBodyParameter
            
                Name = "X-User-Token",
                In = "header",
                Type = "string",
                Required = false
            );
    

Entonces vas a tu SwaggerConfig.cs archivo y agregue lo siguiente en el AddSwaggerGen sección:

c.OperationFilter();

Reconstruir y disfrutar.

Otra forma de agregar encabezados personalizados es agregar parámetros a la acción del controlador.
El siguiente ejemplo agregará x-test parámetro a la interfaz de usuario:

[HttpPost]
public IActionResult Test([FromHeader(Name="x-test")][Required] string requiredHeader)

    return Ok();

ingrese la descripción de la imagen aquí

Recuerda algo, que tienes la opción de aclarar tu experiencia .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *