CodeBiting / onion-cargo-loading-service

Servei per determinar quin contenidor fer servir i com s'han de disposar els elements a dins
MIT License
1 stars 4 forks source link

API per gestionar clients #10

Closed jordidh closed 1 year ago

jordidh commented 1 year ago

Objectiu: Per tal de poder treballar amb múltiples clients i cada client tenir els seus contenidors és important afegir una API per gestionar clients (GET, POST, PUT, DELETE) i relacionar el model dels contenidors amb els clients.

Implementar-ho de la mateixa manera que s'ha implementat l'API de contenidors, amb OPENAPI. Fer servir HATEOAS.

Cada client haurà de tenir les següents dades:

Important: s'haurà de modificar els contenidors per tal de relacionar-los amb els clients

APIs que s'hauran de crear per gestionar clients:

Modificació de les APIs de contenidors per afegir un clientId a cada contenidor i construir APIs per treballar amb els contenidors d'un client concret:

jordidh commented 1 year ago

Si vols passar l'identificador incremental a través de les capçaleres (headers) de la crida REST, pots utilitzar el camp X-Request-ID o un camp personalitzat que comenci amb X-. Això és una convenció comuna per passar informació personalitzada a través de les capçaleres.

Per exemple, podríem passar l'identificador incremental a través del camp X-Request-ID de la següent manera:

GET /api/users/123 HTTP/1.1
Host: www.example.com
X-Request-ID: 456789

Això indicaria que la crida està fent referència a l'usuari amb l'ID 123 i que l'identificador de la crida és 456789.

Exemple de captura del request id

let requestId = req.headers['x-request-id'];
requestId = requestId || /*genenrem l'id*/
jordidh commented 1 year ago

Retornar en el body de la resposta el camp "request-id" per informació del client. Posar-ho en l'objjecte ApiResult

jordidh commented 1 year ago

Per afegir una funció de middleware a Express per generar un identificador abans que qualsevol altra crida, pots fer el següent:

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

// Funció de middleware per generar l'identificador
const generateRequestId = (req, res, next) => {
  req.requestId = Math.floor(Math.random() * 1000000);
  next();
}

// Afegir la funció de middleware a l'aplicació Express
app.use(generateRequestId);

// Definir les rutes
app.get('/api/users/:id', (req, res) => {
  const requestId = req.requestId; // Recuperar l'identificador generat pel middleware
  // Fer alguna cosa amb l'identificador de la crida...
  res.send('La crida ha estat satisfactòria');
});

// Iniciar el servidor
app.listen(3000, () => {
  console.log('Servidor en marxa en el port 3000');
});