Introduction
Al usar la web para ejecutar mi app, significa que cualquiera tiene acceso a ella usando un browser o software que se comunique con HTTP.
Node Js cuenta con un modulo HTTP, el cual me permite como manejar solicitudes de lectura, escritura y trabajar con los datos obtenidos. Este modulo es confiable y capaz pero no estรกn rรกpido como un Framework, para lo cual en esta ocasiรณn para lograr que sea mas rรกpido, usaremos Express.
Create a new Express web application
Al momento de crear una aplicaciรณn web es importante tomar en cuenta los siguientes aspectos.
Routing: Esto se refiere a que mi app, se divide en secciones en funciรณn de partes de la direcciรณn URL.
Supporting different content types: Soporta diferente formatos, como texto sin formato, JSON, HTML, CSV, etc.
Authentication/Authorization: ,Muchas veces el acceso a la informaciรณn va a depender del rol que dicho usuario va a realizar por ende la visualizaciรณn de la informaciรณn dependerรก de ello.
Reading/Writing data: Cuando los usuarios ingresar informaciรณn en formularios o carguen archivos.
Time to market: los frameworks elegidos deben proporcionar soluciones a errores, para ahorrarle tiempo al desarrollador.
HTTP module in Node.js
http.Server: Es la representaciรณn de una instancia de HTTP Server, el cual necesita instrucciones para escuchar en determinado puerto y direcciรณn.
http.IncomingMessage: Es un stream legible creado por http.Server o http.ClientRequest, el usuario puede acceder a status, headers,y data.
http.ServerResponse: Stream creado por HTTP Server, el cual define como deberรญa ser la respuesta.
Aspectos que debes tomar en cuenta para realizar una aplicaciรณn web.
Creaciรณn del servidor: El mรฉtodo llamado createServer() crea una instancia de http.Server.
Implementacion de callback: Este metodo createServer() espera una callback al invocarse, y lo proporciona http.IncomingMessageand http.ServerResponse, conocidos como res y req.
- The client request: El req nos muestra que datos ha enviados el cliente como peticiรณn.
- The server response: El servidor guรญa al res dando que datos son los que va a devolver como respuesta.
Escuchar las solicitudes o requests: A travรฉs de createServer() puedo invocar a el mรฉtodo listen(), especificado el puerto esta listo para aceptar las solicitudes.
Ahora la forma en como estos datos se transportan de un lado a otro por los streams, es decir fragmento por fragmento.
Si quieres saber mas sobre streams puedes visitar el siguiente link:
hora todo esto es ideal para aplicaciones pequeรฑas pero si es algo mayรบsculo, que hago?, recuerdan la implementacion de frameworks, es exactamente eso, y por ello usaremos EXPRESS.
Pero por que razones elegirla por la siguientes:
- Maravillosas caracterรญsticas(rรกpido y productivo).
- Extrae la complejidad(streams).
- Resuelve problemas web comunes(administraciรณn de rutas/cache/redirecciรณn/etc).
- Usada por 6.8 millones lo cual la hace confiable
Route management in Express
Cuando el cliente envรญa una solicitud , lo hace por medio de una URL, apuntando a una direcciรณn y esta a un servidor
Ahora lo que puedas realizar dentro d edicha ruta dependera de cual de los verbos HTTP hayas usado POST, PUT, GET. Express nos ayuda con el registro y emparejamiento de estas rutas. Ahora nosotros vamos a querer que el cliente pueda realizar varias acciones como leer o escribir datos y lo deberรกs hacer asรญ.Teniendo muy en cuenta la diferenciaciรณn de los verbos.
Express viene con batteries included lo cual me permite la admisiรณn de varios formatos para ser devueltos al cliente, usando el mรฉtodo send() para archivos de texto plano, ahora con json(). Pero usando el modulo http el resultado seria asรญ:
Create an Express application
Al momento de iniciar un proyecto en Node Js es recomendable instalar las dependencias que vamos a usar, para que cuando lo subamos a Git, alguien que quiera usar dicho cรณdigo no tenga problemas con ello ya que las dependencias necesarios constaran en el package.json.
Pasos :
1. Instancia la aplicaciรณn2. Definir rutas y manejadores de rutas3. Configurar los middleware4. Inicia la aplicaciรณn.
Route Management
Para facilitar el mantenimiento la app, se divide en varias estructuras, una manera d ehacerlo es haciendo uso de las URL, las cuales me va a dirigir a los diferentes recursos del la app.
URL: Es la direcciรณn que el usuario pondrรก en el browser para hallar un recurso en especifico.
Una URL se compone de las siguientes partes:
scheme: esta parte indica el protocolo utilizado, en este caso, el esquema es http. Otro ejemplo de un esquema es https, ftp, irc, y fileentre otros.
authority: Esta seccion consta de dos partes:User info: consta de una username@passwordparte opcional y tambiรฉn una hostparte. En el ejemplo anterior, has localhost siendo la parte anfitriona. localhost apunta a su propia mรกquina como el servidor web. En la Web, la parte de host es por lo general los nombres de dominio en especifico que usted desee.
Host : Se usa para especificar por medio de un nombre en lugar de una direcciรณn IP. Una direcciรณn IP son las direcciones web reales y se parecen a una serie de nรบmeros 127.0.0.1. Esto facilita a los llamados route requests de una parte de la Web a la otra.Pero para las personas esto no es amigable por lo cual se opta por poner nombre a los dominios.
path: Consta de 0 a muchos segmentos, separados por un /.
query: Esta parte es opcional y se incluye despuรฉs del carรกcter ?. Consiste en una serie de pares de parรกmetros de valor de consulta delimitados por &o ;. Puede usarse para definir aun mas los parรกmetros de bรบsqueda o a su vez para indicar el tamaรฑo de los datos.
fragment: Un fragmento me ayuda a especificar como me muestra los datos es decir en un determinado orden.
Routes: Es una subseccion de la URL que disecciona a un recurso en especifico, ahora tambiรฉn es importante entender los siguientes conceptos de rutas:
route parameters: El parรกmetro de la ruta es la parte que se usa para identificar al elemento del recurso ejemplo: /clientes/280
Nos ayuda a poder definir rutas y asรญ asociarles a controladores y el patrรณn de ruta expresa seria asรญ:
query parameters: Los parรกmetros de consulta se usan para determinar el tamaรฑo de la respuesta y se los encuentra al final de la ruta ejemplo: /products?sort=descLos parรกmetros de consulta se envรญan en un objeto query.
Read and Write: Para ler y escribir datos, debemos configurar de manera diferente segรบn el formato de los datos, ejemplo si los datos provienen de un Html, o en un json, las dos contarรญan con configuraciones diferentes.
Sin importar el formato se debe primero importar la biblioteca body-parse, que ya viene con express, ahora para analizar los datos asรญ:
Por otro lado para el manejo de la solicitud se lo puede hacer por post() y put(),Ahora post() se usa para expresar que desea crear un recurso, y put() para transmitir que un recurso debe actualizarse utilizando los datos entrantes.
HTTP Verbs: El verbo GET para leer datos, y POST para escribir datos.
La organizaciรณn por recursos y por operaciones como lectura / escritura se conoce como CRUD o C reate, R ead, U pdate, D elete, en espaรฑol crear, leer, actualizar, borrar.
Ejemplo real de uso de Express, y elaboracion de API.
en nuestro archivo app.js le especificamos de donde va a tomar la informaciรณn y como lo va hacer.
Porciรณn de cรณdigo de controls.js aquรญ especificamos que va a ejecutarse en la ruta, ejemplo crear una persona con su rol.
Nosotros usamos controles por lo cual en el index.js de rutas queda asรญ
Manage request lifecycle with middleware
Cuando se hace una solisitud , esta debe ser verificada para comprobar si se tiene acceso al recurso solicitado. Y se lo vera de la siguiente manera.
Pre request: Se debe verificar si las credenciales de acceso enviadas por header, coinciden.
Construct the response: Implica la comunicaciรณn con la base de datos, de la cual se obtendrรกn los datos de vamos a devolver, siempre y cuando la solicitud sea correcta.
Post request: Mostramos la respuestas, o a su vez podrรญa existir un paso adicional el cual podrรญa ser para algรบn registro.
Para usar una solicitud previo o posterior debe usar use(), y tiene la siguiente estructura, a esto es lo que conocemos como middleware:
req: Es la solicitud que ingresa, por header, o body si es que envรญa datos el usuario.
res: Es el flujo de respuesta que usara para enviar los datos.
next: Este parรกmetro indica si la solicitud esta lista para ser procesada, pero sino ocurriese aquello se debe comunicar al usuario de la siguiente manera res.send('<specify a reason why the request is stopped>')
Ejemplo del uso de use()
A request pipeline
Cuando necesitemos ejecutar el middleware antes o despuรฉs de la solicitud, para hacerlo despuรฉs de la solicitud es asรญ:
Ahora si desea hacerlo antes se debe hacer asรญ:
Vรญdeo explicativo
No hay comentarios:
Publicar un comentario
Quiero saber que opinas ?