#schema #multipartform-data #openapi
Вопрос:
У меня есть сообщение с данными из нескольких частей/форм в конечной точке API, которое принимает некоторые строки ключа/значения и загружает файл с помощью ключа files
.
Я считаю, что правильно определил его в OpenAPI;
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"properties": {
"file": {
"type": "array",
"items": {
"type": "string",
"format": "binary"
}
},
"myKey1": {
"type": "string"
},
"myKey2": {
"type": "string"
}
}
},
"examples": {
"value": ?
}
}
}
},
Однако я не уверен, как я могу описать пример для составных/форм-данных в examples
поле.
Я предполагаю, что мне не нужно представлять файл (хотя это было бы бонусом), а только myKey1
ключи myKey2
и значения.
Ответ №1:
Ваше определение OAS кажется правильным. Вы можете определить примеры, как показано ниже:
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"properties": {
"file": {
"type": "array",
"items": {
"type": "string",
"format": "binary"
},
"example": [
{
"externalValue": "http://www.africau.edu/images/default/sample.pdf"
}
]
},
"myKey1": {
"type": "string",
"example": "myKey1Example"
},
"myKey2": {
"type": "string",
"example": "myKey2Example"
}
}
}
}
}
},
externalValue
можно добавить, чтобы указать URL-адрес файла образца в спецификации Open API. Это только для целей документа.
Однако он не будет отображаться в пользовательском интерфейсе swagger, так как swagger-ui его еще не поддерживает. Это отслеживается в [1].
Комментарии:
1. Хорошо, спасибо, я понимаю вариант использования
example
, но можете ли вы предоставить вариант использования дляexamples
массива?2. Он используется только для обозначения того, что пользователь API может загружать на этот ресурс более одного файла
3. Ты уверен? Судя по тому, как читается спецификация, похоже
examples
, что это множество различных примеров4.
externalValue
поддерживается только в типе носителяexamples
(множественноеexampleS
число ), он не поддерживается в схеме/свойствеexample
.5. @myol, Извините, у меня сложилось впечатление, что вы спрашиваете о массиве примеров в этих вопросах. Да,
examples
используется для предоставления нескольких примеров для параметра. Вы можете получить более подробную информацию здесь .