AULA 21
MÓDULO 1
HTTP
⏱ 45 min
GET e POST
GET para leitura, POST para criação. Idempotência. Por que parâmetros sensíveis não vão na URL. Validação de body.
GETPOSTidempotênciabodyquery string201400
GET — buscar dados
GET é o método mais usado da web. Toda vez que você digita uma URL no browser ou clica em um link, é um GET. Ele deve ser seguro (sem efeitos colaterais) e idempotente (mesma requisição = mesmo resultado).
CARACTERÍSTICAS DO GET
• Parâmetros na URL — visíveis e cacheáveis
• Sem body (payload)
• Pode ser bookmarkado e compartilhado
• Sem efeito colateral — nunca altera dados
• Resposta pode ser cacheada pelo browser e CDN
cuidado
Nunca use GET para ações que alteram dados (criar, editar, deletar). GET deve ser sempre uma leitura. Motores de busca seguem links GET — um bot pode acionar ações destrutivas se mal implementado.POST — criar dados
POST envia dados no body da requisição — não visíveis na URL. Usado para criar novos recursos, fazer login, enviar formulários.
GET /users?name=João
Parâmetros visíveis na URL
Sem body
Idempotente
Cacheável
Sem body
Idempotente
Cacheável
POST /users
Body com dados
{"name":"João","email":"..."}
Cria novo recurso
Não cacheável
{"name":"João","email":"..."}
Cria novo recurso
Não cacheável
Validação e status codes
Toda POST que cria dados precisa validar o body antes de salvar. Retorne o status code correto para comunicar o resultado.
idempotência
GET e PUT são idempotentes — chamar N vezes = mesmo resultado. POST não é — cada chamada pode criar um novo recurso. POST /users 3x pode criar 3 usuários iguais.
javascript
// GET com query string + POST com body — Express const express = require('express') const app = express() app.use(express.json()) // GET — buscar usuários com filtro opcional app.get('/users', async (req, res) => { const { search, page = 1, limit = 20 } = req.query // SELECT * FROM users WHERE name LIKE ? LIMIT 20 OFFSET ? res.json({ data: [], page, limit }) }) // POST — criar usuário com validação app.post('/users', async (req, res) => { const { name, email, password } = req.body // Validação básica if (!email || !email.includes('@')) { return res.status(400).json({ error: 'Email inválido' }) } // Criar no banco... const user = { id: 1, name, email } res.status(201).json(user) })
quiz · aula 21
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
GET deve ser usado quando você quer...
QUESTÃO 02
Por que parâmetros de login não devem ir na URL (GET)?
QUESTÃO 03
Se POST /orders é chamado 3 vezes com os mesmos dados, o resultado esperado é...
0/3