Enum имя поколения nswag и swashbuckle - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть веб-API, который использует swashbuckle для генерации пользовательского интерфейса swagger и json для генерации кода. Проблема в том, что когда я генерирую код с nswag studio, он не генерирует перечисления в правильном формате. позвольте мне объяснить более четко. Мое перечисление, которое создается следующим образом:

public enum OrderType
{
    ASC = 0,
    DESC = 1,
    None = 2,
}

, но результат, который я получаю с генератором кода nswag studio, выглядит следующим образом:

[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.11.0 (Newtonsoft.Json v12.0.0.0)")]
public enum OrderInfoOrderType
{
    [System.Runtime.Serialization.EnumMember(Value = @"None")]
    None = 0,

    [System.Runtime.Serialization.EnumMember(Value = @"ASC")]
    ASC = 1,

    [System.Runtime.Serialization.EnumMember(Value = @"DESC")]
    DESC = 2,

}

мой код запуска: вот так:

services.AddMvc(option => option.EnableEndpointRouting = false).AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
            options.JsonSerializerOptions.IgnoreNullValues = true;
        });

Что я здесь не так сделал? Я пользуюсь .net core 3.1.

1 Ответ

0 голосов
/ 22 апреля 2020

Я тестировал это с моим тестовым API, и у меня есть это перечисление:

    public enum CustomEnum
    {
        Text = 1,
        Numeric = 2,
        Date = 4,
        Numeric_Function = 8,
        Dropdown_List = 16,
        Checkbox = 32
    }

https://github.com/heldersepu/Swagger-Net-Test/blob/master/Swagger_Test/Controllers/TestEnumController.cs

, и сгенерированный nswag studio выглядит следующим образом:

/// <summary>CustomEnum</summary>
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.11.0 (Newtonsoft.Json v11.0.0.0)")]
public enum Value4
{
    [System.Runtime.Serialization.EnumMember(Value = @"Text")]
    Text = 0,

    [System.Runtime.Serialization.EnumMember(Value = @"Numeric")]
    Numeric = 1,

    [System.Runtime.Serialization.EnumMember(Value = @"Date")]
    Date = 2,

    [System.Runtime.Serialization.EnumMember(Value = @"Numeric_Function")]
    Numeric_Function = 3,

    [System.Runtime.Serialization.EnumMember(Value = @"Dropdown_List")]
    Dropdown_List = 4,

    [System.Runtime.Serialization.EnumMember(Value = @"Checkbox")]
    Checkbox = 5,

}

но на чванстве json нет указания значений для перечисления:
http://swagger-net-test.azurewebsites.net/swagger/docs/V1

"/api/TestEnum": {
  "get": {
    "tags": [
      "TestEnum"
    ],
    "summary": "Simple GET echoing the given param",
    "operationId": "TestEnum_Get",
    "consumes": [],
    "produces": [
      "application/json",
      "text/json",
      "text/html"
    ],
    "parameters": [
      {
        "name": "value",
        "in": "query",
        "description": "CustomEnum",
        "required": true,
        "type": "string",
        "enum": [
          "Text",
          "Numeric",
          "Date",
          "Numeric_Function",
          "Dropdown_List",
          "Checkbox"
        ]
      }
    ]

Я думаю это просто отлично работает, и числовые значения c на клиенте не имеют значения.

Здесь вы можете увидеть весь чванство: http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=TestEnum# / TestEnum / TestEnum_Get

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...