#c# #asp.net-core-webapi #.net-5 #nswag
Вопрос:
У меня есть контроллер webapi .net5, который возвращает ответы JSON в PascalCase:
[{«Электронная почта»:»user@email.com»,»Идентификатор»:16820,»Имя»:»Фамилия пользователя»,»Телефон»:null}, …
… достигается любой из следующих конфигураций, включенной в System.Text.Сериализатор Json:
services.AddControllers()
.AddJsonOptions(opt => opt.JsonSerializerOptions.PropertyNamingPolicy = null);
или путем ссылки Microsoft.AspNetCore.Mvc.NewtonsoftJson
и настройки для NewtonSoftJSON.net:
services.AddControllers()
.AddNewtonsoftJson(c => c.SerializerSettings.ContractResolver = new DefaultContractResolver());
Мы не используем JsonProperty
или что-либо в этом роде для украшения членов DTO
сгенерированная спецификация OpenAPI правильно генерирует модели в PascalCase, но сгенерированные интерфейсы и классы машинописи используют camelCase, например:
export interface IContact {
email?: string | undefined;
id: number;
name?: string | undefined;
phone?: string | undefined;
...
}
Нам нужно, чтобы сгенерированный интерфейс и члены класса находились в PascalCase.
В дополнение к переключению обратно на Newtonsoft я также играл с несколькими входами и настройками в NSwagStudio, чтобы создать вышеуказанные элементы интерфейса в PascalCase, но безрезультатно. Насколько я понимаю, NSwag переносит сериализацию в настройки проекта c#, чтобы сгенерированный код соответствовал выводам сериализатора .net core, но либо в моем случае этого не происходит, либо я что-то неправильно интерпретирую.
Можно ли настроить nSwag для создания классов и интерфейсов машинописного текста (углового шаблона) (вкл. их члены) в Паскаль-кейсе?
Комментарии:
1. В 2018 году владелец NSwag Рико Сутер прокомментировал :
The casing in the interfaces is exactly as the properties in the Swagger spec, because in an interface, we cannot rename them (they must exactly match the received JSON structure).