Masalah:
Tugasnya adalah untuk mencipta pekerja rakam semasa memuat naik imej yang sepadan dalam satu panggilan REST. Objektifnya adalah untuk mencapai fungsi ini dengan cara yang lancar dan cekap.
Penyelesaian:
Untuk mencapai objektif ini, adalah penting untuk memahami bahawa mempunyai berbilang Kandungan -Jenis dalam permintaan yang sama tidak disokong. Sebaliknya, data pekerja hendaklah disertakan sebagai sebahagian daripada permintaan berbilang bahagian.
Coretan kod berikut menggambarkan cara untuk mencapai ini:
@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") Employee emp) { // Business logic }
Di sini, @FormDataParam("emp") anotasi membantu dalam mengekstrak data pekerja daripada permintaan berbilang bahagian. Selain itu, kelas Pekerja hendaklah ditakrifkan dengan kaedah pengambil dan penetap yang sesuai.
Pengujian Berbilang Bahagian:
Untuk menguji kefungsian berbilang bahagian, kelas MultiPartFeature boleh didaftarkan dengan Pelanggan jersi menggunakan daftar(MultiPartFeature.class). Sebagai contoh, coretan ujian berikut boleh digunakan:
@Test public void testGetIt() throws Exception { final Client client = ClientBuilder.newBuilder() .register(MultiPartFeature.class) .build(); WebTarget t = client.target(Main.BASE_URI).path("multipart").path("upload2"); FileDataBodyPart filePart = new FileDataBodyPart("file", new File("stackoverflow.png")); String empPartJson = "{ ... employee data as JSON ... }"; MultiPart multipartEntity = new FormDataMultiPart() .field("emp", empPartJson, MediaType.APPLICATION_JSON_TYPE) .bodyPart(filePart); Response response = t.request().post( Entity.entity(multipartEntity, multipartEntity.getMediaType())); System.out.println(response.getStatus()); System.out.println(response.readEntity(String.class)); response.close(); }
Ujian ini mencipta permintaan berbilang bahagian yang merangkumi kedua-dua imej dan data pekerja.
Pertimbangan:
Atas ialah kandungan terperinci Bagaimana untuk Memuat naik Fail dengan Data Entiti Terbenam dalam Perkhidmatan Web RESTful Jersey?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!