UiPath Documentation
maestro-automate
latest
false
Guía de usuario de Maestro Automate

Solicitud HTTP

El nodo de solicitud HTTP envía una solicitud a una dirección web, con su configuración, autenticación y ramificación de respuesta.

Lo que hace​

Envía una solicitud HTTP a una URL y hace que la respuesta esté disponible para los nodos posteriores.

Opciones de autenticación​

Un nodo de solicitud HTTP cubre ambas formas de autenticación, que eliges en el campo Autenticación :

  • Autenticación manual: el método, la URL, los encabezados, el cuerpo y las credenciales se configuran en línea. Se adapta a cualquier punto final externo de Transferencia de estado representacional (REST) donde las credenciales se gestionan en el nodo, por ejemplo, un encabezado de clave API o un token al portador.
  • Autenticación basada en conector: la solicitud pasa por una conexión, por lo que la conexión gestiona la autenticación y las credenciales no están configuradas en el nodo. Ajusta la gestión centralizada de credenciales en un servicio que está conectado a través de Integration Service.

Referencia de configuración​

CampoObligatorioPredeterminadoDescripción
Importar o exportarNoNingunoUn menú encima de los campos. Importar desde cURL analiza un comando cURL y rellena el método, la URL, los encabezados y el cuerpo automáticamente.
AutenticaciónSíAutenticación manualCómo se autentica la solicitud. La autenticación manual pasa las credenciales en los encabezados de la solicitud. La autenticación basada en conector envía la solicitud a través de una conexión, como se describe a continuación.
MétodoSíGETMétodo HTTP para la solicitud. Los valores admitidos son GET, POST, PUT, PATCH y DELETE.
URLSíNingunoURL completa a la que enviar la solicitud, incluido el esquema https:// . En un campo Valor fijo , se inserta un valor con llaves dobles, por ejemplo https://api.example.com/users/{{ $vars.userId }}.
EncabezadosNoNingunoPares de clave-valor enviados como encabezados de solicitud HTTP. Los nombres y valores de encabezado admiten expresiones de variables.
Parámetros de consultaNoNingunoPares de clave-valor anexados a la URL como cadena de consulta. Los nombres y valores admiten expresiones de variables.
Tipo de contenidoNoapplication/jsonTipo de extensiones de correo de Internet multipropósito (MIME) del cuerpo de la solicitud. Los valores admitidos son application/json, application/xml, text/plain y application/x-www-form-urlencoded.
CuerpoNoVacíoCuerpo de la solicitud para las solicitudes POST, PUT y PATCH . Introduce el valor directamente en el editor de código o utiliza expresiones variables.
Pestaña de ramificaciónNoSolo salida predeterminadaRamas de respuesta que enrutan el flujo de trabajo en función de las propiedades de respuesta. Cada rama tiene un nombre y una expresión de condición.
Tiempo de espera (pestaña Avanzado )NoPT15MTiempo máximo de espera para una respuesta, en formato de duración de la Organización Internacional de Normalización (ISO) 8601.
Recuento de reintentos (pestaña Avanzado )No0Número de veces para reintentar la solicitud si falla. Los reintentos utilizan el valor de tiempo de espera como intervalo de retroceso.

Autenticación basada en conector​

Cuando la autenticación es Autenticación basada en conector, el panel muestra estos campos en lugar de los manuales:

CampoObligatorioDescripción
ConectorSíEl conector a través del cual enviar la solicitud, por ejemplo Slack.
Conexión (llamada así por el conector, por ejemplo Conexión de Slack)SíLa conexión que se va a utilizar.
MétodoSíEl método HTTP para la solicitud.
URL baseNoLa URL base del conector, que se muestra como un marcador de posición como https://slack.com/api.
RutaNoLa ruta del punto final para la solicitud de la API REST.
EncabezadosNoPares clave-valor, hasta 20. El conector añade sus propios encabezados Authorization, Accept y Content-Type automáticamente.
Parámetros de consultaNoPares clave-valor, hasta 20.

El editor sugiere nombres de encabezado comunes como Authorization, Content-Type, Accept, X-Api-Key y otros. Para los parámetros de consulta, añadir un parámetro con el nombre page y el valor 2 envía la solicitud a https://api.example.com/items?page=2.

El nodo evalúa las condiciones de la rama en orden y sigue la primera coincidencia. Si ninguna rama coincide, el flujo de trabajo sigue la salida predeterminada .

Las expresiones de condición de rama utilizan la misma sintaxis de JavaScript que los nodos de decisión y conmutador:

$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code >= 400
$vars.httpRequest1.output.code >= 400

Cada rama aparece como un controlador de salida independiente en el lado derecho del nodo en el lienzo, junto con el controlador Predeterminado .

Valores de tiempo de espera comunes:

  • PT30S: 30 segundos.
  • PT5M: 5 minutos.
  • PT15M: 15 minutos.
  • PT1H: 1 hora.

Credenciales​

Puedes autenticar solicitudes de dos maneras.

Autenticación manual​

Pasa las credenciales directamente en los encabezados de las solicitudes. Para la autenticación de clave API, añade un encabezado con el nombre X-Api-Key y el valor establecido a tu clave. Para la autenticación del token al portador, añade un encabezado Authorization con un valor como Bearer <your-token>.

Almacena valores confidenciales como tokens y claves API en variables secretas en lugar de codificarlos.

Autenticación basada en conector​

Selecciona una conexión en el panel de propiedades. La conexión inyecta credenciales en la solicitud automáticamente, por lo que no necesitas gestionar los encabezados tú mismo.

Una conexión se adapta a la gestión centralizada de credenciales, la actualización automática de tokens y los casos en los que varios flujos de trabajo comparten las mismas credenciales de API.

Nota:

Create a connection describes how to create one.

Ejemplos​

Ejemplo 1: solicitud GET básica​

Obtener un único recurso de una API pública.

El nodo está configurado con el Método establecido en GET y la URL establecida como https://jsonplaceholder.typicode.com/posts/1. Todos los demás campos permanecen en sus valores predeterminados.

La respuesta está disponible en un nodo de Script posterior:

const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.code;

return {
  title: body.title,
  userId: body.userId,
  status: status
};
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.code;

return {
  title: body.title,
  userId: body.userId,
  status: status
};

El objeto de respuesta está disponible en $vars.httpRequest1.output y contiene tres campos:

  • $vars.httpRequest1.output.body: el cuerpo de la respuesta analizado.
  • $vars.httpRequest1.output.code: el código de estado HTTP, por ejemplo 200.
  • $vars.httpRequest1.output.headers: un objeto que contiene los encabezados de respuesta.

Ejemplo 2: solicitud POST con un cuerpo JSON​

Crea un nuevo recurso enviando una carga útil JSON.

El nodo está configurado con el Método establecido en POST, la URL establecida como https://api.example.com/orders, un encabezado Authorization con el valor Bearer {{ $vars.apiToken }} y el Tipo de contenido como application/json. El cuerpo:

{
  "product": "Widget",
  "quantity": 5,
  "customer_id": "cust_12345"
}
{
  "product": "Widget",
  "quantity": 5,
  "customer_id": "cust_12345"
}

El ID del recurso creado está disponible en un nodo descendente:

const orderId = $vars.httpRequest1.output.body.id;
return { orderId: orderId };
const orderId = $vars.httpRequest1.output.body.id;
return { orderId: orderId };

Si la solicitud falla y has conectado un controlador de error, los detalles del error están disponibles en $vars.httpRequest1.error:

// In a Script node connected to the error handle
const errorMessage = $vars.httpRequest1.error.message;
const errorStatus = $vars.httpRequest1.error.status;

return {
  failed: true,
  reason: errorMessage,
  httpStatus: errorStatus
};
// In a Script node connected to the error handle
const errorMessage = $vars.httpRequest1.error.message;
const errorStatus = $vars.httpRequest1.error.status;

return {
  failed: true,
  reason: errorMessage,
  httpStatus: errorStatus
};

El objeto de error contiene:

  • code
  • message
  • detail
  • category
  • status

Ejemplo 3: enrutar respuestas con ramas​

Las ramas de respuesta permiten que el flujo de trabajo siga diferentes rutas en función de la respuesta de la API sin un nodo de decisión independiente.

El nodo está configurado con el Método establecido en GET, la URL establecida como https://api.example.com/users/{{ $vars.userId }} y dos ramas en la pestaña Ramificación : Success con la condición $vars.httpRequest1.output.code === 200 y Not Found con la condición $vars.httpRequest1.output.code === 404.

El nodo ahora tiene tres controladores de salida en el lienzo:

  • Éxito: se conecta a los nodos que procesan los datos del usuario.
  • No encontrado: se conecta a los nodos que manejan al usuario que falta.
  • Predeterminado: se conecta a una ruta alternativa para cualquier otro código de estado.

Cada ruta descendente recibe la respuesta completa. Por ejemplo, en la rama Éxito:

const user = $vars.httpRequest1.output.body;
return { name: user.name, email: user.email };
const user = $vars.httpRequest1.output.body;
return { name: user.name, email: user.email };

Elegir entre la solicitud HTTP y un nodo de integración​

Utiliza el nodo de solicitud HTTP como herramienta de propósito general para llamar a cualquier API. Utiliza un nodo de integración dedicado cuando exista uno para el servicio al que estás llamando.

Utilizar solicitud HTTP cuando...Utiliza un nodo de integración cuando...
La API no tiene un conector dedicado en el panel Añadir nodoA connector exists for the service, such as Slack, Salesforce, or HubSpot CRM
Necesitas un control completo sobre los encabezados, los parámetros de consulta y el formato del cuerpoQuieres entradas y salidas predefinidas sin configuración manual
Está creando prototipos para una nueva API o servicio internoDesea una conexión que maneje el inicio de sesión y la actualización del token por usted
La API utiliza un esquema de autenticación no estándarQuieres un flujo de trabajo mantenible que no se rompa si la API cambia su contrato

Por regla general, buscar primero un conector en el panel Añadir nodo es el mejor orden, con la solicitud HTTP como alternativa cuando no existe nada para el servicio de destino.

Próximos pasos​

  • Nodo de script: transformar y procesar datos de respuesta HTTP.
  • Nodo de decisión: ramificación en condiciones, como alternativa a las ramas de respuesta.
  • Variables y flujo de datos: $vars, sintaxis de expresión y ámbito de variable.
  • Comunidad: haz preguntas y comparte flujos de trabajo con otros constructores en UiPath Forum.

¿Te ha resultado útil esta página?

Conectar

¿Necesita ayuda? Soporte(opens in new window)

¿Quiere aprender? UiPath Academy(opens in new window)

¿Tiene alguna pregunta? Foro de UiPath(opens in new window)

Manténgase actualizado