En aquest tema, aprendrem a crear un servidor bàsic per a una API RESTful utilitzant Node.js i Express, un dels frameworks més populars per al desenvolupament d'APIs en JavaScript. Aquest servidor serà capaç de gestionar peticions HTTP bàsiques i respondre amb dades en format JSON.

Objectius

  • Configurar un projecte Node.js.
  • Instal·lar i configurar Express.
  • Crear rutes bàsiques per a l'API.
  • Gestionar peticions GET i POST.

  1. Configuració del projecte Node.js

Pas 1: Instal·lació de Node.js

Si encara no tens Node.js instal·lat, pots descarregar-lo i instal·lar-lo des del lloc web oficial. Assegura't de tenir també npm (Node Package Manager), que s'instal·la automàticament amb Node.js.

Pas 2: Inicialitzar el projecte

Crea una nova carpeta per al teu projecte i inicialitza un nou projecte Node.js utilitzant npm.

mkdir api-server
cd api-server
npm init -y

Aquestes comandes crearan una nova carpeta anomenada api-server i inicialitzaran un nou projecte Node.js amb un fitxer package.json per gestionar les dependències del projecte.

Pas 3: Instal·lació d'Express

Instal·la Express utilitzant npm.

npm install express

  1. Creació del servidor bàsic amb Express

Pas 1: Crear el fitxer principal

Crea un fitxer anomenat index.js a la carpeta del projecte. Aquest fitxer serà el punt d'entrada del nostre servidor.

Pas 2: Configurar el servidor

Obre index.js i afegeix el següent codi per configurar un servidor bàsic amb Express.

const express = require('express');
const app = express();
const port = 3000;

// Middleware per parsejar JSON
app.use(express.json());

// Ruta bàsica
app.get('/', (req, res) => {
  res.send('Hola, món!');
});

// Iniciar el servidor
app.listen(port, () => {
  console.log(`Servidor escoltant a http://localhost:${port}`);
});

Explicació del codi

  • const express = require('express');: Importa el mòdul Express.
  • const app = express();: Crea una instància de l'aplicació Express.
  • const port = 3000;: Defineix el port en el qual el servidor escoltarà les peticions.
  • app.use(express.json());: Afegeix un middleware per parsejar les peticions amb cos en format JSON.
  • app.get('/', (req, res) => { res.send('Hola, món!'); });: Defineix una ruta GET bàsica que respon amb "Hola, món!".
  • app.listen(port, () => { console.log(Servidor escoltant a http://localhost:${port}); });: Inicia el servidor i fa que escolti al port 3000.

Pas 3: Executar el servidor

Executa el servidor utilitzant node.

node index.js

Si tot ha anat bé, hauràs de veure el missatge Servidor escoltant a http://localhost:3000 a la consola. Ara pots obrir el navegador i anar a http://localhost:3000 per veure la resposta "Hola, món!".

  1. Gestió de peticions GET i POST

Ruta GET

Afegeix una nova ruta GET que retorni una llista d'elements en format JSON.

app.get('/items', (req, res) => {
  const items = [
    { id: 1, name: 'Item 1' },
    { id: 2, name: 'Item 2' },
    { id: 3, name: 'Item 3' }
  ];
  res.json(items);
});

Ruta POST

Afegeix una nova ruta POST que permeti afegir un nou element a la llista.

app.post('/items', (req, res) => {
  const newItem = req.body;
  newItem.id = Date.now(); // Assignar un ID únic
  res.status(201).json(newItem);
});

Explicació del codi

  • app.get('/items', (req, res) => { ... });: Defineix una ruta GET que retorna una llista d'elements en format JSON.
  • app.post('/items', (req, res) => { ... });: Defineix una ruta POST que rep un nou element en el cos de la petició i el retorna amb un ID únic assignat.

Exercici Pràctic

Objectiu

Crear una API bàsica que gestioni una llista de tasques (to-do list) amb operacions CRUD (Create, Read, Update, Delete).

Instruccions

  1. Crea una nova ruta GET /tasks que retorni una llista de tasques.
  2. Crea una nova ruta POST /tasks que permeti afegir una nova tasca.
  3. Crea una nova ruta PUT /tasks/:id que permeti actualitzar una tasca existent.
  4. Crea una nova ruta DELETE /tasks/:id que permeti eliminar una tasca existent.

Solució

const express = require('express');
const app = express();
const port = 3000;

app.use(express.json());

let tasks = [
  { id: 1, title: 'Tascar 1', completed: false },
  { id: 2, title: 'Tascar 2', completed: true }
];

app.get('/tasks', (req, res) => {
  res.json(tasks);
});

app.post('/tasks', (req, res) => {
  const newTask = req.body;
  newTask.id = Date.now();
  tasks.push(newTask);
  res.status(201).json(newTask);
});

app.put('/tasks/:id', (req, res) => {
  const taskId = parseInt(req.params.id);
  const updatedTask = req.body;
  tasks = tasks.map(task => (task.id === taskId ? { ...task, ...updatedTask } : task));
  res.json(updatedTask);
});

app.delete('/tasks/:id', (req, res) => {
  const taskId = parseInt(req.params.id);
  tasks = tasks.filter(task => task.id !== taskId);
  res.status(204).send();
});

app.listen(port, () => {
  console.log(`Servidor escoltant a http://localhost:${port}`);
});

Explicació del codi

  • let tasks = [ ... ];: Defineix una llista de tasques inicials.
  • app.get('/tasks', (req, res) => { ... });: Retorna la llista de tasques.
  • app.post('/tasks', (req, res) => { ... });: Afegeix una nova tasca a la llista.
  • app.put('/tasks/:id', (req, res) => { ... });: Actualitza una tasca existent.
  • app.delete('/tasks/:id', (req, res) => { ... });: Elimina una tasca existent.

Conclusió

En aquesta secció, hem après a configurar un projecte Node.js, instal·lar i configurar Express, i crear un servidor bàsic capaç de gestionar peticions GET i POST. També hem vist com implementar operacions CRUD bàsiques per a una llista de tasques. Aquestes habilitats són fonamentals per al desenvolupament d'APIs RESTful més complexes. En el següent tema, explorarem com gestionar peticions i respostes de manera més avançada.

© Copyright 2024. Tots els drets reservats