Al crear un endpoint para un proceso de negocio, hay que especificar el tipo de datos que se enviarán en esta petición (Request payload type). La opción más común es JSON; permite especificar cómodamente todos los parámetros necesarios y pasar un modelo de datos o un array de objetos. Además, son posibles otras opciones, por ejemplo, XML o Multipart Form (si necesita enviar archivos).

Al mismo tiempo, es aceptable una situación en la que la estructura exacta no se conoce de antemano (o simplemente no importa). En este caso, una opción razonable es utilizar las consultas "raw".

request payload type

Proceso de negocio para las solicitudes de raw

Imagínese una situación en la que esto pueda ser necesario. Digamos que el servicio que estamos desarrollando es sólo un enlace de conexión. Su tarea es recibir una solicitud del usuario, comprobar la autorización, guardar los registros, realizar la protección contra el spam y redirigir la solicitud si todo está en orden.

Una característica importante de las consultas de Raw es que no se utilizan parámetros de entrada al diseñar los procesos de negocio. En su lugar, se utiliza un bloque especial para obtener el cuerpo de la petición - Get Request Body. Supongamos que está interesado en información ampliada sobre la solicitud. En ese caso, el bloque Current Request Info es una opción adecuada, ya que no sólo devuelve el cuerpo de la solicitud, sino también parámetros adicionales y cabeceras de la solicitud.

Current Request Info

En el caso de que estemos interesados en una cabecera específica de la petición, se puede obtener utilizando el bloque Get Request Header bloque. El ejemplo anterior lee la cabecera X-Real-IP que contiene la dirección IP de la solicitud. La IP resultante se pasa a una función que debe comprobar que la IP dada es válida y no está en la lista negra de direcciones prohibidas. Como resultado, el proceso será abortado con un mensaje de error apropiado o, si todo está en orden, se permitirá su ejecución.

IP Check

La solicitud, recibida como Raw, se representa como una matriz de bytes. Para facilitar la percepción, se puede convertir en una cadena (To String block); en esta forma, la información se almacena en los registros.

En este caso, la petición en sí, sin transformaciones, puede ser redirigida posteriormente utilizando el HTTP Request bloque. En este ejemplo, se especifican el método de solicitud, su URL y el cuerpo de la solicitud (obtenido del Current Request Info ). El resultado del bloque HTTP Request se utiliza como resultado de todo el proceso de negocio.

HTTP Request

La captura de pantalla muestra el proceso de negocio final. Tenga en cuenta que los bloques de funciones (FUNC Save request Log y FUNC IP Blacklist Check) son ejemplos y sólo existen en el ámbito de este proyecto.

BP Complete

Por lo tanto, el punto final puede utilizarse para trabajar con cualquier solicitud, independientemente de su contenido real. No es necesario conocer la petición exacta que debe enviarse a un servicio de terceros, e incluso si hay algunos cambios en ella (añadir un modelo, cambiar el nombre de los parámetros), se puede seguir utilizando el endpoint sin hacer cambios en el proyecto.

Was this article helpful?

AppMaster.io 101 Curso intensivo

10 Módulos
2 Semanas

¿No sabe por dónde empezar? Ponte en marcha con nuestro curso intensivo para principiantes y explora AppMaster de la A a la Z.

Inicio de curso
Development it’s so easy with AppMaster!

Necesitas más ayuda?

Resuelva cualquier problema con la ayuda de nuestros expertos. Ahorre tiempo y concéntrese en crear sus aplicaciones.

headphones

Soporte de contacto

Cuéntenos su problema y le encontraremos una solución.

message

Chat comunitario

Discutir preguntas con otros usuarios en nuestro chat.

Únete a la Comunidad