в файле swagger openapi, могу ли я иметь «описание» в отдельном файле?

#swagger #openapi

#swagger #openapi

Вопрос:

Я пишу документацию swagger для API, и поля «описание» становятся довольно длинными, и их трудно редактировать.

 {
  "openapi": "3.0.0",
  "info": {
    "version": "2.0.0",
    "title": "My API",
    "description": "<h2>A very very long description</h2><p>which includes html tags</p>",
    ...
  },
  "paths": {
    "/somepath": {
      "get": {
        "description": "<h3>Another</h3><p>extremely long description... </p><p>that wraps over 50 lines</p>",
        ...
      }
    },
    ...
  },
 

Эти описания важны, потому что первое отображается сверху, когда пользователь просматривает страницу swagger; а другие описания появляются в начале каждого пути.

Меня просят добавить еще кое-что в описания.

Возможно ли иметь описание в отдельном файле, а затем импортировать / включить его?

Ответ №1:

У меня было аналогичное требование, и я решил его, используя методы расширения в c #. Также помогло сохранить метод запуска в чистоте.

 services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo 
    { 
        Title = "Trimble Connect Bim API", 
        Version = "v1",
        Description = ApiSpecExtension.GetDescription()
    });
    c.EnableAnnotations();
}
 

Добавьте статический метод в статический класс, как показано ниже

 public static class ApiSpecExtension
{
    public static string GetDescription()
    {
        string description = "Your long description"  
                   "# Heading 1"  
                   "## Heading 2"  
                   "### Heading 3"  
                   "| HTTP Status |  Error Code | Retry  |n"    
                   "| ----------- | ----------- | ------ |n"   
                   "|    400      | Bad request |   No   | n";                                    
       return description;
    }
}