Heim > Java > javaLernprogramm > Wie lade ich Dateien mit zusätzlichen JSON-Daten in einen RESTful-Webdienst von Jersey hoch?

Wie lade ich Dateien mit zusätzlichen JSON-Daten in einen RESTful-Webdienst von Jersey hoch?

DDD
Freigeben: 2024-12-03 07:34:09
Original
439 Leute haben es durchsucht

How to Upload Files with Additional JSON Data in a Jersey RESTful Web Service?

Datei-Upload mit zusätzlichen Daten im Jersey RESTful Web Service

Um den Datei-Upload zusammen mit anderen Objektdaten in einem einzigen REST-Aufruf zu erreichen, ändern Sie die Methode uploadFileWithData wie folgt:

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") String employeeJson) {

    // Deserialize the employee data from JSON
    JacksonJsonProvider provider = new JacksonJsonProvider();
    Employee emp = provider.readFrom(Employee.class, employeeJson);

    // ...business logic...
}
Nach dem Login kopieren

Key Punkte:

  • Anstatt ein Employee-Objekt zu verwenden, empfangen Sie die Mitarbeiterdaten als rohen JSON-String (String EmployeeJson).
  • Verwenden Sie Jacksons JacksonJsonProvider, um den JSON-String zu deserialisieren das Employee-Objekt.
  • Stellen Sie sicher, dass der Anbieter in Ihrem JAX-RS registriert ist Anwendung.

Postman Fehlerbehebung:

Postman legt möglicherweise nicht automatisch Inhaltstypen für einzelne Körperteile fest. Um dies zu beheben:

  1. Öffnen Sie den Anfragetext im Postman-Editor.
  2. Klicken Sie mit der rechten Maustaste auf den „emp“-Teil und wählen Sie „Bearbeiten“ oder „Kopfzeile hinzufügen“.
  3. Setzen Sie den Inhaltstyp auf application/json.

Alternative Lösung:

Alternativ können Sie den Content-Type explizit in Ihrer REST-Methode festlegen:

@POST
@Path("/upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(
        @FormDataParam("emp") FormDataBodyPart jsonPart,
        @FormDataParam("file") FormDataBodyPart bodyPart) {

    jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
    Employee emp = jsonPart.getValueAs(Employee.class);

    // ...business logic...
}
Nach dem Login kopieren

Hinweis:

Wenn Wenn Sie einen anderen Connector als HttpUrlConnection verwenden, können Probleme auftreten, wie in den zugehörigen Kommentaren beschrieben.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien mit zusätzlichen JSON-Daten in einen RESTful-Webdienst von Jersey hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage