Metode CRUD produse

Model produse + JWT

În cadrul folderului routes, creăm fișierul product.routes.js care va conține toate metodele CRUD pentru produse.

Începem prin adăugarea importurilor necesare și prin instanțierea router-ului, si ulterior prin adăugarea rutelor:

1. Creare produs

circle-info

Descrierea rutei de creare a unui produs:

  • Ruta POST /products permite crearea unui produs nou în baza de date.

  • verifyToken verifică dacă utilizatorul este autentificat înainte să permită operația.

  • Datele produsului sunt trimise prin req.body (ex: name, price, description etc.).

  • Product.create() inserează produsul în baza de date folosind valorile din req.body.

  • Dacă inserarea reușește → răspuns cu status 201 și produsul creat.

  • Dacă apare o eroare → răspuns cu status 500 și mesaj de eroare.

2. Actualizare produs

circle-info

Descrierea rutei de actualizare a unui produs:

  • Ruta PUT /products/:id actualizează un produs existent după ID.

  • verifyToken verifică dacă utilizatorul este autentificat înainte de actualizare.

  • ID-ul produsului este preluat din URL (req.params.id).

  • Se verifică dacă ID-ul este numeric și valid.

  • Se caută produsul în baza de date cu Product.findByPk(id).

  • Dacă produsul nu există → răspuns 404 (Product not found).

  • Dacă există → se actualizează câmpurile primite în req.body cu product.update().

  • Returnează răspuns 200 cu produsul actualizat.

  • Dacă apare o eroare → răspuns 500 (Error updating product).

3. Șterge produs

circle-info

Descrierea rutei de ștergere a unui produs:

  • Ruta DELETE /products/:id șterge un produs existent după ID.

  • verifyToken verifică dacă utilizatorul este autentificat înainte de ștergere.

  • ID-ul produsului este preluat din URL (req.params.id).

  • Se verifică dacă ID-ul este numeric și valid.

  • Se caută produsul în baza de date cu Product.findByPk(id).

  • Dacă produsul nu există → răspuns 404 (Product not found).

  • Dacă există → se șterge produsul cu product.destroy().

  • Returnează răspuns 200 cu mesaj de succes.

  • Dacă apare o eroare → răspuns 500 (Error deleting product).

4. Preluare produse/produs pe bază de ID

circle-info

Descrierea rutelor de preluare a produselor:

GET /products

  • Returnează toate produsele din baza de date.

  • Nu necesită autentificare (nu are verifyToken).

  • Folosește Product.findAll() pentru a prelua toate produsele.

  • Răspuns de succes → status 200 și lista produselor.

  • Dacă apare o eroare → răspuns 500 și mesaj de eroare.


GET /products/:id

  • Returnează un produs specific după ID.

  • ID-ul produsului este preluat din URL (req.params.id).

  • Se verifică dacă ID-ul este numeric și valid.

  • Folosește Product.findByPk(id) pentru a căuta produsul în baza de date.

  • Dacă produsul nu există → răspuns 404 (Product not found).

  • Dacă există → răspuns 200 și datele produsului.

  • Dacă apare o eroare → răspuns 500 și mesaj de eroare.

5. Implementare metode CRUD produse la nivel de server

Ca metodele CRUD pentru produse să poată fi folosite, este nevoie să ne asigurăm că serverul are la cunoștință existența acestora.

Așadar, mergem în fisierul index.js din folderul server, unde adăugăm importul router-ului de produse și middlware-ul de rutare către metodele CRUD pentru produse.

Middleware-ul de rutare (route middleware):

  • Atașează router-ul productRoutes la ruta de bază /products.

Practic, toate rutele definite în productRoutes vor fi accesibile cu prefixul /products.

Ruta în productRoutes

Ruta finală în aplicație

router.get('/', ...)

/products/

router.get('/:id', ...)

/products/:id

router.post('/', ...)

/products/

router.put('/:id', ...)

/products/:id

router.delete('/:id', ...)

/products/:id

Last updated