NSwag (Swagger) создает файл swagger с чувствительностью к регистру, что приводит к несогласованности имен параметров - PullRequest
0 голосов
/ 14 января 2019

У меня есть основной проект asp.net, который использует NSwag в качестве инструмента Swagger. У меня проблема в следующем:

  1. У меня есть класс Dto, описывающий сущность Collection :

#

namespace SchedulerApi.Entities
{
    public class JobCollectionDtoV2
    {
        [Required]
        [FromRoute]
        [RegularExpression("^[a-z][a-z0-9]+$")]
        [StringLength(maximumLength: 24, MinimumLength = 3)]
        public string Collection { get; set; }

        [Required]
        [FromRoute]
        [RegularExpression("^[a-z][a-z0-9]+$")]
        [StringLength(maximumLength: 24, MinimumLength = 3)]
        public string Tenant { get; set; }
    }
}
  1. Следующий API используется для добавления Коллекции :

#

[HttpPut]
[Route("tenants/{tenant}/collections/{collection}")]
[SwaggerResponse(typeof(JobCollectionDtoV2))]
public async Task<IActionResult> CreateTask(JobCollectionDtoV2 collectionParams)
{
}
  1. Это файл Swagger, который генерирует NSwag:

#

{
    "put": {
        "tags": [
            "JobCollectionsControllerV2"
        ],
        "operationId": "JobCollectionsControllerV2_CreateTask",
        "consumes": [
            "application/json-patch+json",
            "application/json",
            "text/json",
            "application/*+json"
        ],
        "parameters": [
            {
                "type": "string",
                "name": "Collection",
                "in": "path",
                "required": true,
                "maxLength": 24,
                "minLength": 3,
                "pattern": "^[a-z][a-z0-9]+$",
                "x-nullable": true
            },
            {
                "type": "string",
                "name": "Tenant",
                "in": "path",
                "required": true,
                "maxLength": 24,
                "minLength": 3,
                "pattern": "^[a-z][a-z0-9]+$",
                "x-nullable": true
            },
            {
                "name": "CollectionDetails",
                "in": "body",
                "required": true,
                "schema": {
                    "$ref": "#/definitions/JobCollectionDetails"
                },
                "x-nullable": false
            }
        ],
        "responses": {
            "200": {
                "x-nullable": true,
                "description": "",
                "schema": {
                    "$ref": "#/definitions/JobCollectionDtoV2"
                }
            }
        }
    }
}

В частности, проблема, с которой я столкнулся, вызвана тем, что путь объявляет две переменные tenant и collection строчными, а класс DTO объявляет соответствующие свойства с прописными буквами Tenant и Collection.

Я надеюсь найти способ украсить свойства класса DTO атрибутом, который будет явно объявлять имя параметра, что-то вроде [JsonProperty("collection")] (этот конкретный не влияет на вывод Swagger).

Ценю вашу помощь

...