-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi-notes.js
137 lines (104 loc) · 3.07 KB
/
api-notes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
Instalar express pelo npm ou yarn e inicializar o jason.package
npm install express
npm init -y
yarn add express
yarn init -y
Importar módulos e criar instância do server
*/
const express = require('express')
const server = express()
// Usa isso para inserir dados (PUT) em formato json
server.use(express.json)
// Porta a ser acessada
server.listen(3000)
// No GET tem que definir a rota (route param)
// ou seja, o que vem logo após o localhost:porta
/*
----------------
Query parameters - /curso?aula=NodeJS res.query
Route parameters - /curso/backend res.params
Request body - { curso: 'NodeJS', tipo: 'Backend' } res.body
----------------
*/
/*
Quando atualizamos o código, para não precisar para o servidor e startar de novo,
podemos utilizar o nodemon:
yarn add nodemon -D
nodemon index.js
Para automatizar, podemos colocar no arquivo package.json o seguinte:
...
"script": {
"dev": nodemon.index.js
},
...
Aí, no terminal colocamos:
yarn dev
Agora, quando o arquivo é salvo, o nodemon restarta o servidor, atualizando os dados
*/
// MÉTODOS HTTP
let cursos = ['Javascript', 'Python', 'Swift']
/*
MIDDLEWARE - É uma função executada no meio das requisições
next é para requisição seguir adiante (não travar)
*/
function checkCurso(req, res, next) {
if (!req.body.name) {
return res.status(400).json({error: 'Nome do curso é obrigatório'})
}
return next()
}
function checkIndex(req, res, next) {
const curso = cursos[req.params.index]
if (!curso) {
return res.status(400).json({ message: 'Curso não existente'})
}
return next()
}
// GET - Read
// pegar todos os cursos
server.get('/cursos', (req, res) => {
return res.json({ cursos: `${cursos}` })
})
server.get('/curso', (req, res) => {
const nome = req.query.nome // isso vai ser passado pela pagina na url localhost:3000/curso?nome=Victor
return res.json({curso: `${nome}`})
// ou
// return res.send('Success') Assim ele coloca um <h1>
})
/*
Se eu quiser passar alguma varivel para acessar uma rota, por exemplo:
os dois pontos antes do 'index' diz que vai ser passado essa variavel
*/
server.get('curso/:index', checkIndex, (req, res) => {
const index = req.query.index
res.json({ curso: `${index}` })
})
// Outro exemplo - localhost:3000/curso/1
server.get('/curso/:index', (req, res) => {
const index = req.params
res.json({ Curso: `${cursos[index]}` })
})
// POST - Create
server.post('cursos/', checkCurso, (req, res) => {
const { name } = req.body
cursos.push(name)
return res.json(cursos)
})
/*
No postman, coloca POST, e na parte de inferior coloca JSON e escreve:
{ 'name': 'Java' }
*/
// PUT - Update
server.put('/cursos/:index', checkCurso, checkIndex, (req, res) => {
const index = req.params
const name = req.body
cursos[index] = name
return res.json(cursos)
})
// DELETE - Delete
server.delete('/cursos/:index', checkIndex, (req, res) => {
const index = req.params
cursos.splice(index, 1)
return res.json({ message: 'Curso deletado com sucesso' })
})