У меня есть сценарий, когда мне нужно загрузить изображение через запрос POST. Нет проблемы, когда я использую клиент Postman для отправки запросов. Мне нужно использовать интерфейс Swagger для проверки вызова API, и я не могу отправить изображение.
Я попытался изменить значения параметров в файле swagger.json, чтобы приспособиться к этому, но все мои попытки были тщетными.
В настоящее время я пытаюсь изменить файл swagger-ui.js
. Посмотрев файл, я нашел это -
request.types = {
html: 'text/html',
json: 'application/json',
xml: 'application/xml',
urlencoded: 'application/x-www-form-urlencoded',
'form': 'application/x-www-form-urlencoded',
'form-data': 'application/x-www-form-urlencoded'
};
Нет типа запроса для обработки image/jpeg
или любого другого типа файла, кроме шести указанных типов запросов.
Я также нашел часть кода, в которой обрабатываются multipart/form-data
.
var isMultiPart = false;
if(headers['Content-Type'] && headers['ContentType'].indexOf('multipart/form-data') >= 0) {
isMultiPart = true;
}
if (hasFormParams && !isMultiPart) {
var encoded = '';
for (key in formParams) {
value = formParams[key];
if (typeof value !== 'undefined') {
if (encoded !== '') {
encoded += '&';
}
encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
}
}
body = encoded;
} else if (isMultiPart) {
if (opts.useJQuery) {
var bodyParam = new FormData();
bodyParam.type = 'formData';
for (key in formParams) {
value = args[key];
if (typeof value !== 'undefined') {
// required for jquery file upload
if (value.type === 'file' && value.value) {
delete headers['Content-Type'];
bodyParam.append(key, value.value);
} else {
bodyParam.append(key, value);
}
}
}
body = bodyParam;
}
}
Я также попытался добавить значение isImageJpeg
для обработки изображений. Я не могу продолжать, так как у меня нет опыта работы с JavaScript. Есть ли способ, с помощью которого я могу аналогичным образом добавить условие, которое может обрабатывать загрузку изображений?
Текущая спецификация OpenAPI Swagger запрещает любое описание полезной нагрузки HTTP (по параметру consumes
), отличную от application/x-www-form-urlencoded
и/или multipart/form-data
.
Одной из причин этого является то, что вы не должны полагаться на свой клиент для подачи правильного типа MIME для загруженного файла.