Ich versuche gerade eine ReST-Methode zu schreiben, die einen Datei-Upload akzeptiert. Wenn der Benutzer die Datei abschickt, möchte ich auch, dass sie eine Beschreibung und einige andere Metadaten zum Inhalt der Datei hinzufügen (z. B. einen "Typ", der dem Inhalt der Datei zugeordnet ist). Ich verwende den Spring MVC Controller mit Spring 4.
Dies ist ein Beispiel für das, was ich tun möchte:
%Vor%Wenn ich jedoch versuche, diese Methode über die Swagger-Benutzeroberfläche aufzurufen, erhalte ich eine nicht unterstützte Medientyp-Ausnahme:
%Vor%Ich vermute, dass ich application / json und multipart / form-data in einer Anfrage nicht mischen kann?
UPDATE: Basierend auf einer Antwort von zeroflagL und dem mitgelieferten Link zu der Dokumentation, die spezifisch für meine Aufgabe ist, und mit @RequestPart anstelle von @RequestBody, habe ich ein paar Fortschritte gemacht, aber das funktioniert immer noch nicht.
neue Methodensignatur:
%Vor%neue Ausnahme:
%Vor%Vielen Dank im Voraus, Tonya
Sie können Medientypen in der Spring-REST-Methode mischen. @ zeroflagL / antwort vielleicht richtig. aber @RequestPart funktioniert gut. Hier ist mein Code, es ist nichts anderes als deins
%Vor%Ich schlage vor, Sie sollten Ihre Anfrage überprüfen. nicht Ihr serverseitiger Code. Hier ist der Test-Vorschau-Code (ich habe in Chrome mit Postman getestet)
%Vor%Inhaltstyp fehlt in Anforderung. Dieser Test ist mit MissingServletRequestPartException fehlgeschlagen, weil der erforderliche Anforderungsteil 'registerRequest' nicht vorhanden ist.
Sie können mit RESTClient oder etwas anderem testen und prüfen, ob der Inhaltstyp vorhanden ist oder nicht.
Die Spring-Dokumentation erklärt explizit, was zu tun ist.
Die Idee, mix / json und multipart / form-data em> zu mischen, ist falsch, weil application/json
ein Teil der mehrteiligen (sic!) Anfrage wäre.
WebKitFormBoundary
lässt mich glauben, dass Sie versuchen, eine AJAX-Anfrage von Ihrem Browser zu senden, und ich frage mich, ob Sie wirklich JSON senden. AFAIK ist es nicht möglich, explizit einen (echten) JSON-Teil hinzuzufügen, wie er in der Spring-Dokumentation gezeigt wird. Vielleicht können Sie uns den Kundencode zeigen.
Wie auch immer, du kannst @RequestBody
nicht verwenden, weil das die Dateien enthalten würde, die du hochladen willst. Sie müssten @RequestPart
verwenden. Wenn Sie anstelle von JSON Formulardaten neben den Dateien senden, benötigen Sie keinerlei Anmerkungen.
Tags und Links java spring rest spring-mvc