Creare un server che permetta di gestire un app di note con express-js
- Le response menzionate sotto sono a titolo esemplificativo, i dati possono cambiare in base allo user.
- La struttura delle response deve essere rispettata. Non devono essere inventante nuove chiavi e attenzione agli status code
- I query params e i params devono essere VALIDATI
- Il progetto deve avere un file .env (ATTENZIONEEE!!!)
- Il progetto deve avere un middleware di auth
- Il progetto deve avere un middleware di log per tracciar e tutte le rotte chiamate (
${method}: ${url} [${time}]
) - Il progetto deve prendere i dati delle note dall'api
https://its.dbdevelopment.tech/notes
- Utilizzare il file
.env.sample
per gestire le variabili del server
Ogni utente deve richiedere un APIKEY
al link https://its.dbdevelopment.tech/key/{user}
Per ottenere la chiave bisogna chiamare in GET
la url https://its.dbdevelopment.tech/key/@nomeutenteGitHub
con il vostro utente.
Salvatevi la chiave da usare nella seconda chiamata.
la response sara:
{
"status": "success",
"data": "chiave-personale-da-usare"
}
Per ottenere il file delle note bisogna chiamare in POST
la url https://its.dbdevelopment.tech/notes
con payload
{
"user": "@nomeutenteGitHub"
}
e con header
:
{
"token": "chiave-personale-da-usare"
}
La chiamata deve salvare il data in database/githubnotes.json
.
-
[GET] -
api/notes
- Restituisce tutte le note- La rotta NON deve essere Autenticata
- La risposta della rotta deve essere:
{ "success": true, "list": true, "data": [ { "id": "e1960fc6-4d45-4b10-a333-7f90041e17c7", "user": "spacex", "date": "2022-05-20", "title": "Corso Node", "body": "Crea app Note", "created_at": "2022-05-31 09:04:34" }, { "id": "8be856f4-67d5-4c3f-95bd-e98e00799bb3", "user": "puppy", "date": "2022-05-11", "title": "Corso Node", "body": "Crea app Note", "created_at": "2022-05-31 09:04:34" } ] }
-
[GET] -
api/notes/:uuid
- Restituisce la nota con uuid passato come parametro- La rotta NON deve essere Autenticata
- La risposta della rotta deve essere:
{ "success": true, "single": true, "data": [ { "id": "e1960fc6-4d45-4b10-a333-7f90041e17c7", "user": "spacex", "date": "2022-05-20", "title": "Corso Node", "body": "Crea app Note" } ] }
-
[GET] -
api/notes?date=2023-10-01
- Restituisce tutte le note con data maggiore didate
- La risposta della rotta deve essere:
{ "success": true, "filtered": true, "data": [ { "id": "e1960fc6-4d45-4b10-a333-7f90041e17c7", "user": "spacex", "date": "2023-11-20", "title": "Corso Node", "body": "Crea app Note" } ] }
- La risposta della rotta deve essere:
-
[GET] -
api/notes?limit=2
- Restituisce un numero dilimit
note- Le note devono essere ordinate per data, il limit deve prendere le ultime 2
- La risposta della rotta deve essere:
{ "success": true, "data": [ { "id": "e1960fc6-4d45-4b10-a333-7f90041e17c7", "user": "spacex", "date": "2022-05-20", "title": "Corso Node", "body": "Crea app Note" }, { "id": "8be856f4-67d5-4c3f-95bd-e98e00799bb3", "user": "puppy", "date": "2022-05-11", "title": "Corso Node", "body": "Crea app Note" } ] }
-
[POST] -
api/notes
- Aggiunge una nota- La rotta DEVE essere Autenticata
id
akauuid
DEVE essere autogeneratoid
akauuid
NON DEVE essere passato nel body- Il body deve essere:
{ "user": "spacex", "date": "2022-05-20", "title": "Corso Node", "body": "Crea app Note" }
- la response deve essere l'oggetto creato
- lo status code deve essere
201
.
-
[PUT] -
api/notes/:uuid
- Aggiorna la nota- La rotta DEVE essere Autenticata
- NON posso aggiornare
data
,id
akauuid
euser
- Il body deve essere:
{ "title": "Corso Node", "body": "Crea app Note" }
- la response deve essere indentica a quella di [GET] -
api/notes
con la nuova nota aggiornata - lo status code deve essere
200
.
-
Se visito uno rotta non corretta devo ricevere la seguente risposta.
{ "success": false, "code": 1001, "error": "Server Error" }
con status Code
500
. -
Se NON trovo una risorsa.
{
"success": false,
"code": 4001,
"error": "Resource not found"
}
con status Code 404
.
-
Se visito una rotta
auth
senza codice auth devo ottenere{ "success": false, "code": 2001, "error": "Unauthorized" }
con status Code
401
. -
Se visito una rotta
auth
con codice auth SBAGLIATO devo ottenere{ "success": false, "code": 2002, "error": "Forbidden" }
con status Code
403
.
npm install
npm start