Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

382
Vistas
Personalice los nombres de los modelos generados: interfaz de usuario de Swagger

Estoy tratando de ajustar el "displayName" del modelo que se utiliza en una definición de Swagger generada automáticamente.

Esto solo afectará a los nombres de Swagger, lo que significa que el espacio de nombres en el código no se modificará, mientras que al mirar el modelo desde la interfaz de usuario de Swagger, verá un nombre personalizado.

Actualmente, el nombre del modelo que se devuelve desde el código es un espacio de nombres y se parece a esto: bcdef , me gustaría agregar un atributo al código y "enmascarar" el nombre para los documentos de Swagger, de modo que cuando la documentación/definición de Swagger obtenga generado, se mostrará como CustomSwaggerName en su lugar.

Tengo algunas API (C#) que usan herramientas que incluyen Swashbuckle (preferido) y SwaggerGen , pero ahora mismo, me gustaría que funcione en cualquiera de las dos, si es posible.

He intentado usar atributos que parecen correctos:

 [ResponseType(typeof(Company)),DisplayName("NewCompany")] [SwaggerResponse(200,"NewCompany",typeof(object))]

Sin suerte También busqué en el repositorio git de SwashBuckle , con la esperanza de encontrar algo.

Una imagen que debería ayudar a explicar mejor lo que estoy tratando de lograr. ingrese la descripción de la imagen aquí

Sé que esto puede parecer un caso de uso extraño, pero es para una herramienta que se está escribiendo para nuestra automatización de AWS API Gateway, que utilizará la definición de Swagger para algunas comparaciones.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

(Cuentas para .net core :)
Combinaría el atributo de visualización de la clase con un esquema de swagger personalizado:

 [DisplayName("NewCompany")] public class Company { }

y luego en Inicio:

 services.AddSwaggerGen(c => { c.CustomSchemaIds(x => x.GetCustomAttributes<DisplayNameAttribute>().SingleOrDefault().DisplayName); });

ver también esta respuesta

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta es: use un IDocumentFilter:

 private class ApplyDocumentFilter_ChangeCompany : IDocumentFilter { public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer) { if (swaggerDoc.definitions != null) { swaggerDoc.definitions.Add("Company123", swaggerDoc.definitions["Company"]); } if (swaggerDoc.paths != null) { swaggerDoc.paths["/api/Company"].get.responses["200"].schema.@ref = "#/definitions/Company123"; } } }

Aquí está el código: https://github.com/heldersepu/SwashbuckleTest/commit/671ce648a7cc52290b4ad29ca540b476e65240e6

Y aquí está el resultado final: http://swashbuckletest.azurewebsites.net/swagger/ui/index#!/Company/Company_Get

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda