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
Descrierea rutei de creare a unui produs:
Ruta
POST /productspermite crearea unui produs nou în baza de date.verifyTokenverifică 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 dinreq.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
Descrierea rutei de actualizare a unui produs:
Ruta
PUT /products/:idactualizează un produs existent după ID.verifyTokenverifică 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.bodycuproduct.update().Returnează răspuns 200 cu produsul actualizat.
Dacă apare o eroare → răspuns 500 (Error updating product).
3. Șterge produs
Descrierea rutei de ștergere a unui produs:
Ruta
DELETE /products/:idșterge un produs existent după ID.verifyTokenverifică 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
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
productRoutesla 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