2017-06-02 1 views
1

Ich habe ein Szenario, in dem ich ein Bild durch POST-Anfrage hochladen muss. Es gibt kein Problem, wenn ich den Postman-Client zum Senden der Anfragen verwende. Ich muss Swagger UI verwenden, um den API-Aufruf zu testen, und ich kann das Bild nicht senden.Kopfzeile ("Content-Type": "image/jpeg") für Swagger UI.

Ich habe versucht, die Parameterwerte in der swagger.json-Datei zu ändern, um dies zu berücksichtigen, aber alle meine Versuche waren sinnlos.

Derzeit versuche ich, die Datei swagger-ui.js zu ändern. Auf die Datei suchen, fand ich diese -

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' 
}; 

Es gibt keine Anfrage Typ image/jpeg oder jede andere Datei zu verarbeiten geben neben der 6 oben angegebenen Anforderungstypen.

Ich fand auch den Teil des Codes, wo multipart/form-data behandelt wird.

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; 
    } 
} 

Ich habe auch versucht isImageJpeg Wert Hinzufügen von Bildern zu handhaben. Ich kann nicht fortfahren, da ich keine Erfahrung mit JavaScript habe. Gibt es einen Weg, auf dem ich in ähnlicher Weise eine Bedingung hinzufügen kann, die mit dem Hochladen von Bildern umgehen kann?

+0

Wie soll Ihre Anfrage aussehen, z.B. bei der Verwendung von 'Curl'? Kannst du auch deine Swagger-Spezifikation (.json/.yaml) posten? – Helen

Antwort

1

Der aktuelle OpenAPI specification Swagger folgt verbietet jede Beschreibung von HTTP-Nutzlast (durch den Parameter consumes) außer application/x-www-form-urlencoded und/oder multipart/form-data.

Einer der Gründe dafür ist, dass Sie sich nicht darauf verlassen sollten, dass Ihr Client correct MIME type für eine hochgeladene Datei bereitstellt.