2017-06-02 47 views
1

我有一個場景,我需要通過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' 
}; 

沒有請求類型來處理image/jpeg或任何其他文件類型遠離6上面給出請求類型。

我還發現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經驗,因此無法繼續。有沒有一種方法可以類似地添加可以處理圖像上傳的條件?

+0

您的要求應該如何?當使用'curl'?另外,你可以發佈你的Swagger規範(.json/.yaml)嗎? – Helen

回答

1

當前OpenAPI specification揚鞭如下禁止除application/x-www-form-urlencoded和/或其它multipart/form-data HTTP有效載荷的任何描述(由consumes參數)。

其中一個原因是,您不應該依賴您的客戶端爲上傳的文件提供correct MIME type