REST - Servicios Web
Introducción
Las peticiones REST son direcciones en línea que devuelven información de datos procesados en el servidor, que contiene la lógica de negocio de los datos que requieren seguridad y fiabilidad, con integración de la base de datos.
Más sobre REST
La construcción de la API REST se realiza a partir de los Servicios de Netuno.
ALL
Para crear un servicio en Netuno que responda a cualquier tipo de método HTTP:
📂 server/services/mi-servicio.js
En el navegador, este servicio se ejecutará para todos los tipos de peticiones en la dirección:
GET
Las direcciones de tipo GET se utilizan normalmente para operaciones de listado u obtención de datos.
Para crear un servicio en Netuno que responda solo al tipo de método GET, utilice una de estas formas:
📂 server/services/lista/get.js📂 server/services/lista.get.js
En el navegador, este servicio se ejecutará solo para el tipo de petición GET en la dirección:
POST
Las direcciones de tipo POST se utilizan normalmente para operaciones que crean o generan nuevos datos.
Para crear un servicio en Netuno que responda solo al tipo de método POST, cree el archivo de código utilizando una de estas formas:
📂 server/services/crear/post.js📂 server/services/crear.post.js
Este servicio se ejecutará solo para el tipo de petición POST en la dirección:
PUT
Las direcciones de tipo PUT se utilizan normalmente para operaciones que modifican registros de datos.
Para crear un servicio en Netuno que responda solo al tipo de método PUT, cree el archivo de código utilizando una de estas formas:
📂 server/services/guardar/put.js📂 server/services/guardar.put.js
Este servicio se ejecutará solo para el tipo de petición PUT en la dirección:
DELETE
Las direcciones de tipo DELETE se utilizan normalmente para operaciones que eliminan nuevos registros de datos.
Para crear un servicio en Netuno que responda solo al tipo de método DELETE, cree el archivo de código utilizando una de estas formas:
📂 server/services/eliminar/delete.js📂 server/services/eliminar.delete.js
Este servicio se ejecutará solo para el tipo de petición DELETE en la dirección:
OPTIONS
En la integración con el frontend, durante el proceso de validación de CORS, el navegador realiza la llamada de tipo OPTIONS.
Más sobre CORS.
Para crear un servicio en Netuno que responda solo al tipo de método OPTIONS, cree el archivo de código utilizando una de estas formas:
📂 server/services/listar/options.js📂 server/services/listar.options.js
Debe implementarse para todos los servicios que se integran en un frontend externo, como un sitio web.
Código utilizado normalmente:
_out.json(_val.map().set("resultado", true))
Este servicio se ejecutará para el tipo de petición OPTIONS en la dirección:
Clientes y Ejecución de Pruebas
Para ejecutar pruebas de los servicios con el tipo de método específico, puede utilizar programas propios que realizan pruebas sobre API REST, como:
CURL
Con el comando curl en el terminal puede realizar cualquier tipo de prueba.
Desde la consola/línea de comandos envía un GET:
curl http://localhost:9000/services/guardar
Con -X puede especificar el tipo de método:
curl -X POST -F 'nombre=Prueba' -F 'email=email@ejemplo.com' http://localhost:9000/services/guardar
El parámetro
-Fenvía con el Content-Type:multipart/form-data
Otra forma de enviar parámetros:
curl -X POST -d 'nombre=Prueba' -d 'email=email@ejemplo.com' http://localhost:9000/services/guardar
Se puede concatenar de la siguiente forma:
curl -X POST -d 'nombre=Prueba&email=email@ejemplo.com' http://localhost:9000/services/guardar
El parámetro
-denvía con el Content-Type:application/x-www-form-urlencoded
JSON
Para enviar en formato JSON es necesario especificar el tipo de contenido:
curl -X POST -H "Content-Type: application/json" \
-d '{"nombre": "Prueba", "email": "email@ejemplo.com"}' \
http://localhost:9000/services/guardar
El
-Hdefine la parametrización de la cabecera (HEADER)
Subida de archivos
Para realizar la subida de archivos:
curl -X POST -F 'imagen=@/home/usuario/archivo.jpg' http://localhost:9000/services/guardar
Cliente de servicio - NPM
Para realizar fácilmente la integración con el frontend, se proporciona el módulo de NPM:
Comando de instalación: npm i -S @netuno/service-client
Al definir la dirección de los servicios, como:
_service.config({
prefix: 'http://localhost:9000/services/'
});
Podrá ejecutar servicios integrados con el frontend, como por ejemplo:
_service({
url: "/services/mi-servicio",
method: 'POST',
data: { parametro1: "1", parametro2: "2" },
success: (respuesta) => {
if (respuesta.json) {
console.log("Respuesta del servicio", respuesta.json);
}
},
fail: (e) => {
console.log("Error del servicio", e);
}
});
Conclusión
Se admite restringir los servicios solo al tipo de método HTTP deseado.
Para integrar con el frontend se puede hacer al nivel más bajo utilizando fetch.
Para agilizar y estandarizar la implementación se proporciona el módulo NPM @netuno/service-client.