我有一个场景,我需要通过POST请求上传图像。当我使用Postman Client发送请求时,没有问题。我需要使用Swagger UI测试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'
};
除了以上6个给定的请求类型外,没有请求类型可以处理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遵循除application/x-www-form-urlencoded
和/或multipart/form-data
外,禁止对HTTP有效载荷的任何描述(通过consumes
参数(。
这样做的原因之一是,您不应该依靠客户为上传文件提供正确的MIME类型。