Как правильно вернуть вывод json с помощью nswagC#

Место общения программистов C#
Ответить
Anonymous
 Как правильно вернуть вывод json с помощью nswag

Сообщение Anonymous »

Я использую nswag для генерации кода контроллера C# на стороне сервера с помощью файла yaml.
Я могу успешно вызвать конечную точку через вызывающую сторону API (например, почтальон). >
Основная проблема заключается в том, что результат не соответствует моим ожиданиям.
Чтобы упростить задачу,
Пусть скажем, у меня есть следующее определение yaml, которое будет возвращено конечной точкой GET.

Код: Выделить всё

Car:
type: object
required:
- id
- color
- type
properties:
id:
type: integer
format: int64
color:
type: string
enum: [red, yellow]
type:
type: string
enum: [a, b]

GetCarByIdResponse:
type: object
required:
- car
properties:
car:
$ref: '#/components/schemas/Car'
Затем nswag генерирует следующий код контроллера сервера C#, который я могу реализовать:

Код: Выделить всё

    public override async Task GetCarById(long id)
{
...
return Ok(new GetCarByIdResponse() { car = ...});
}
В https://editor.swagger.io/ (с определением yaml) я вижу, что ответ должен быть примерно таким, как показано ниже:

Код: Выделить всё

{
"car": {
"id": 1,
"color": "yellow",
"type": "a"
}
}
Но когда я на самом деле вызываю конечную точку GET, я получаю неожиданный результат.

Код: Выделить всё

{
car: {
id: 1,
color: 1,
type: 0
}
}
Существует две основные проблемы:
  • Для допустимого формата json имя поля должно быть заключено в двойные кавычки ( например, это должно быть «цвет» вместо цвета)
  • Для поля перечисления это показывает целочисленное значение перечисления (в сгенерированном коде C#), но не строку для удобства чтения человеком.
Есть ли каким-либо образом сгенерированный nswag серверный код C# может сгенерировать что-то, соответствующее тому, что показано в https://editor.swagger.io/ в качестве допустимого вывода json?

Подробнее здесь: https://stackoverflow.com/questions/790 ... y-by-nswag
Ответить

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

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

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

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

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