Saltar al contenido

Puerta de enlace API – Publicar multipartform-data

Esta es el arreglo más completa que encomtrarás compartir, pero primero estúdiala pausadamente y valora si se adapta a tu trabajo.

Solución:

API Gateway actualmente no admite datos de formularios de varias partes. Esto se está considerando para el desarrollo futuro. Mientras tanto, deberá modificar su cliente para usar varias solicitudes o una sola solicitud de una parte.

Actualizar: API Gateway ahora admite cargas útiles binarias. Simplemente defina multipart/form-data como un tipo de medio binario para su API y envíe la carga útil directamente a una función de Lambda. Desde allí, puede analizar el cuerpo para obtener el contenido de su archivo. Debería haber bibliotecas disponibles para ayudar a analizar el cuerpo multiparte (parse-multipart en Node.js, por ejemplo).

Para aquellos que aún necesitan ayuda, esto ahora está documentado oficialmente:

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html

Para resumir, los pasos son los siguientes:

  1. Vaya a la pestaña de configuración de API Gateway para su API y agregue multipart/form-data al tipos de medios binarios sección.
  2. Agregar Content-Type y Accept a los encabezados de solicitud para su método de proxy
  3. Agregue esos mismos encabezados a los encabezados de solicitud de integración
  4. Vuelva a implementar la API

Tuve el mismo problema para integrarme con mi servidor Tomcat, encontré a continuación los cambios necesarios para solucionarlo.

  1. Agregar Tipo de contenido en tu api Encabezados de solicitud HTTP en la puerta de enlace api por consola o agréguelo en la documentación abierta de api como

    {
        "/yourApi":
            "post":
                "operationId":"uploadImageUsingPOST",
                "produces":[
                    "application/json"
                ],
                "parameters":[
                
                    "name":"Content-Type",
                    "in":"header",
                    "required":false,
                    "type":"string"
                ,
                
                    //Other headers
                ]   
            
        
    
  2. El paso anterior también agrega Content-Type en los encabezados HTTP de la solicitud de integración de su API, si no, agréguelo allí también y agregue un encabezado más Aceptar =’/ en la puerta de enlace api por consola o agréguelo en la documentación abierta de api como

    "requestParameters":
        "integration.request.header.Accept":"'*/*'",
        "integration.request.header.Content-Type":"method.request.header.Content-Type",
        //Other headers
    
    
  3. Establezca Manejo de contenido como Passthrough en la solicitud de integración de su API.

  4. Agregue multipart/form-data como tipos de medios binarios en la configuración de su API a través de la consola o mediante la documentación de API abierta

    "x-amazon-apigateway-binary-media-types": [
        "multipart/form-data"
    ]
    
  5. Implemente los cambios anteriores en la etapa deseada donde va a cargar la imagen como varias partes.

La puerta de enlace Api pasará su archivo multiparte como binario array y aún puede usar @RequestBody MultipartFile multipartFile en su controlador y Spring analizará este binario en varias partes por usted.

Agradecemos que desees añadir valor a nuestro contenido aportando tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *