Добавьте пользовательский атрибут в файл спецификации OpenAPI и разверните его в .net core web api.C#

Место общения программистов C#
Ответить
Anonymous
 Добавьте пользовательский атрибут в файл спецификации OpenAPI и разверните его в .net core web api.

Сообщение Anonymous »

У меня есть проект веб-API .Net Core 5 (C#), в котором я добавил и настроил Swagger.Net. Все работает нормально, но теперь клиент попросил меня добавить «пользовательский атрибут» в файл OAS, чтобы указать, что API еще не готовы к производству:
x-acme-production-ready=false

На сегодняшний день я всегда предоставляю файл JSON, автоматически создаваемый Swagger.
Как я могу создать файл OAS с такой структурой:
openapi: "3.0.0"

# REQUIRED - Formal commitments from the API focal point
x-acme-api-commitments:
api-100: We commit to providing a proper valid OpenAPI (swagger) specification file for each API change.....

# REQUIRED - List of versions changes
x-acme-api-changelog:
- version: 1.0.0
changes: Add GET /example
- version: 1.1.0
changes: Add POST /example

info:
# REQUIRED - Functional descriptive name of the API.
title: ACME - Basic template API

Вышеупомянутый файл выглядит как текстовое представление JSON, поэтому, возможно, этого должно быть достаточно, чтобы добавить настраиваемое поле x-acme-production-ready в JSON, но как я могу добавить его программно?
********* ОБНОВЛЕНИЕ ***********
Глядя на спецификацию выше, это настраиваемое поле следует добавить на том же уровне тега «информация» в JSON развязность:
openapi: "3.0.1",
x-acme-production-ready: "true",
info: {
title: "my-app-title",
version: "v1.0"
},
servers: [
{
url: "https://localhost:44370"
}
],
paths: {...}

Я добавил в свой проект класс CustomModelDocumentFilter, но не могу понять, как и где его вызвать и как с его помощью добавить это поле в эту позицию.
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Collections.Generic;

namespace MyApp.Swagger
{
public class CustomModelDocumentFilter : IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
swaggerDoc....
}
}
}

В моем стартапе:
services.AddSwaggerGen(c =>
{
c.DocumentFilter();
c.SwaggerDoc("v1.0", new OpenApiInfo { Title = "my app title", Version = "v1.0", Description = "my app description." });

string xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
string xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);

});


Подробнее здесь: https://stackoverflow.com/questions/694 ... t-core-web
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»