servicio responseentity example ejemplo consumir java json spring-mvc postman

java - responseentity - cómo cargar un archivo y datos json en cartero



spring rest (13)

Estoy usando Spring MVC y este es mi método:

/** * Upload single file using Spring Controller */ @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(@RequestParam("name") String name, @RequestParam("file") MultipartFile file,HttpServletRequest request, HttpServletResponse response) { if (!file.isEmpty()) { try { byte[] bytes = file.getBytes(); // Creating the directory to store file String rootPath = System.getProperty("catalina.home"); File dir = new File(rootPath + File.separator + "tmpFiles"); if (!dir.exists()) dir.mkdirs(); // Create the file on server File serverFile = new File(dir.getAbsolutePath() + File.separator + name); BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile)); stream.write(bytes); stream.close(); System.out.println("Server File Location=" + serverFile.getAbsolutePath()); return null; } catch (Exception e) { return null; } } }

Necesito pasar el id de sesión en cartero y también el archivo. ¿Cómo puedo hacer eso?


  1. No le des ningún encabezado.
  2. Ponga sus datos json dentro de un archivo .json.
  3. Seleccione ambos archivos, uno es su archivo .txt y otro es el archivo .json para sus claves de parámetros de solicitud.

En cartero, establezca el tipo de método en POST .

Luego seleccione Cuerpo -> datos de formulario -> Ingrese el nombre de su parámetro ( archivo de acuerdo con su código)

y en el lado derecho al lado de la columna de valor, habrá un desplegable "texto, archivo" , seleccione Archivo . elige tu archivo de imagen y publícalo.

Para el resto de parámetros basados ​​en "texto" , puede publicarlo como lo hace normalmente con cartero. Simplemente ingrese el nombre del parámetro y seleccione "texto" en el menú desplegable del lado derecho e ingrese cualquier valor para él, presione el botón enviar. Su método de controlador debe ser llamado.


Me gusta esto :

Cuerpo -> datos de formulario -> seleccionar archivo

Debe escribir "archivo" en lugar de "nombre"

También puede enviar datos JSON desde Cuerpo -> campo sin procesar. (Solo pegue la cadena JSON)


Necesitaba pasar ambos: un archivo y un número entero. Lo hice de esta manera:

  1. necesitaba pasar un archivo para cargar: lo hice según la respuesta de Sumit.

    Tipo de solicitud: POST

    Cuerpo -> datos de formulario

    debajo del encabezado CLAVE , ingresé el nombre de la variable (''archivo'' en mi código de fondo).

    en el backend:

    file = request.files[''file'']

    Junto a ''archivo'', hay un cuadro desplegable que le permite elegir entre ''Archivo'' o ''Texto''. Elija ''Archivo'' y bajo el título VALOR , apareció ''Seleccionar archivos''. Hice clic en este que abrió una ventana para seleccionar el archivo.

2. necesario para pasar un número entero:

fui a:

Params

ingresó el nombre de la variable (por ejemplo, id) debajo de KEY y su valor (por ejemplo: 1) debajo de VALUE

en el backend:

id = request.args.get(''id'')

¡Trabajó!


Si alguien necesitara:

cuerpo -> datos de formulario

Agregar nombre de campo como matriz


Si alguien quiere enviar datos json en formato de datos de formulario, solo necesita declarar las variables como esta

Cartero:

Como puede ver, el parámetro de descripción estará en formato json básico, resultado de eso:

{ description: { spanish: ''hola'', english: ''hello'' } }


Si desea realizar una solicitud PUT , simplemente haga todo como una solicitud POST pero agregue _method => PUT a sus parámetros de form-data .


Si usa cookies para mantener la sesión, puede usar el interceptor para compartir cookies del navegador al cartero.

Además, para cargar un archivo, puede usar la pestaña de datos de formulario debajo de la pestaña del cuerpo del cartero, en la que puede proporcionar datos en formato clave-valor y para cada clave puede seleccionar el tipo de texto / archivo de valor. cuando selecciona la opción de tipo de archivo apareció para cargar el archivo.


Tal vez podrías hacerlo de esta manera:



Si necesita cargar archivos en varias partes utilizando datos de formulario y enviar datos json (objeto Dto) en la misma solicitud POST

Obtenga su objeto JSON como String en Controller y hágalo Deserializar agregando esta línea

ContactDto contactDto = new ObjectMapper().readValue(yourJSONString, ContactDto.class);


Seleccione [Tipo de contenido] en [MOSTRAR COLUMNAS] y luego configure el tipo de contenido de "aplicación / json" en el parámetro de texto json.


Primero debe encontrar el menú desplegable casi invisible de color gris pálido sobre blanco para File que es la llave mágica que desbloquea el botón Choose Files .

La guía visual que falta:

Después de elegir POST , luego elija Body->form-data , luego busque el menú desplegable Archivo y luego elija ''Archivo'', solo entonces aparecerá mágicamente el botón ''Elegir archivos'':