header("Content-Type": "image/jpeg") 对于 Swagger UI。

header("Content-Type": "image/jpeg") for Swagger UI.

我有一个场景需要通过 POST 请求上传图片。当我使用 Postman 客户端发送请求时没有问题。我需要使用 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 specification Swagger 禁止除 application/x-www-form-urlencoded and/or multipart/form-data.[= 之外的任何 HTTP 负载描述(通过 consumes 参数)。 15=]

其中一个原因是您不应依赖您的客户为上传的文件提供 correct MIME type