Backend Server Side

Agenda

  • Server Side
  • Node.js
  • NPM
  • API vs API REST
  • Express.js

Server Side

SERVER

El término "Server Side" se refiere a la ejecución de código en el servidor en lugar del cliente.

Frontend vs Backend

Frontend: Interfaz de usuario y experiencia de usuario.

Backend: Lógica de negocio, almacenamiento y procesamiento de datos.

Server Side con Javascript

  • Se refiere a la ejecución de código JavaScript en el servidor en lugar de en el navegador del usuario.
  • JavaScript, originalmente diseñado para ejecutarse en navegadores web del lado del cliente, ha ganado popularidad en el lado del servidor gracias a entornos como Node.js.
  • Nos referimos a la capacidad de ejecutar código JavaScript en el servidor, lo que permite realizar tareas como procesamiento de datos, acceso a bases de datos, manipulación de archivos y otras operaciones del lado del servidor.

Node.js

  • Entorno de ejecución de JavaScript basado en V8 de Google Chrome.
  • Modelo de eventos y bucle de eventos.
  • Permite operaciones asincrónicas sin bloquear solicitudes.
SERVER

Instalación de Node.js

SERVER

Descargar desde: nodejs.org

node -v
  npm -v

Módulos y Require

  • los módulos son unidades independientes de código reutilizable.
  • Puedes crear tus propios módulos y también utilizar los módulos integrados o instalados a través de npm
SERVER
SERVER

Se pueden importar con require.

const miModulo = require('./miModulo');

import vs require

  • Node.js utiliza require para importar módulos.
  • La sintaxis import es parte del estándar ECMAScript (ES6 y versiones posteriores) y no es nativamente compatible con Node.js.
  • Sin embargo, a partir de Node.js versión 13, se ha habilitado la opción experimental para usar la sintaxis import mediante la extensión de archivo .mjs o configuraciones específicas.
SERVER

NPM

  • Gestor de paquetes para Node.js.
  • Permite instalar librerías con un solo comando.
  • npm init -y: crea un package.json.

API y REST

API

  • Interfaz de programación de aplicaciones.
  • Permite la comunicación entre aplicaciones.
  • Se basa en solicitudes HTTP.
SERVER

API REST

  • Arquitectura de transferencia de estado representacional.
  • Se basa en el protocolo HTTP.
  • Utiliza los métodos GET, POST, PUT y DELETE.
SERVER
SERVER

Express.js

Express.js es un framework web para Node.js que simplifica el desarrollo de aplicaciones web y APIs.

Proporciona un conjunto robusto de características para construir aplicaciones web y móviles, incluyendo manejo de rutas, middleware, y gestión de solicitudes y respuestas HTTP

Instalación de Express.js

npm install express
  • Crear un archivo app.js
  • Importar express
  • Crear una instancia de express
  • Definir rutas
  • Escuchar en un puerto
SERVER

Rutas

  • Express permite manejar rutas de manera sencilla.
  • Puedes definir rutas para diferentes métodos HTTP (GET, POST, PUT, DELETE) y gestionar parámetros de URL.
  • Las rutas son utilizadas para definir cómo la aplicación responde a solicitudes HTTP específicas.
SERVER

Definiendo rutas

  • app.get('/', (req, res) => {...}): define una ruta para las solicitudes HTTP GET en la ruta raíz ("/").
  • La función de devolución de llamada (callback) (req, res) => {...} se ejecutará cuando se reciba una solicitud en esa ruta.
  • req es el objeto de solicitud res es el objeto de respuesta.
SERVER

Parámetros

  • Puedes definir rutas con parámetros que se pueden acceder a través de req.params.
  • Los parámetros se definen con dos puntos seguidos del nombre del parámetro.
  • Por ejemplo, para una ruta /users/:id, puedes acceder al parámetro id a través de req.params.id.
SERVER

Metodos HTTP

  • Express permite definir rutas para diferentes métodos HTTP.
  • Los métodos HTTP más comunes son GET, POST, PUT y DELETE.
  • app.get(), app.post(), app.put(), app.delete()
SERVER

Ejemplo de API en Python (Flask)

from flask import Flask

            app = Flask(__name__)
            
            @app.route('/')
            def home():
            return "¡Hola, mundo desde Flask!"
            
            if __name__ == '__main__':
            app.run(debug=True, port=5000)

Ejemplo de API en Go (Gin)

package main
            
            import (
            "github.com/gin-gonic/gin"
            )
            
            func main() {
            r := gin.Default()
            r.GET("/", func(c *gin.Context) {
                c.JSON(200, gin.H{"message": "¡Hola, mundo desde Go!"})
            })
            r.Run(":8080")
            }