AULA 22
MÓDULO 1
HTTP
⏱ 45 min
PUT, PATCH e DELETE
PUT vs PATCH: substituição vs atualização parcial. DELETE e soft delete. A grade completa de CRUD mapeada para métodos HTTP.
PUTPATCHDELETEsoft deleteCRUD204idempotência
PUT vs PATCH — atualizar
Ambos atualizam dados, mas com semânticas diferentes. PUT substitui o recurso inteiro. PATCH atualiza apenas os campos enviados.
PUT /users/42
Envia o recurso completo. Campos não enviados são apagados/resetados. Use quando você tem o objeto inteiro.
PATCH /users/42
Envia apenas os campos a atualizar. Campos não enviados são preservados. Mais eficiente e seguro.
DELETE — remover recursos
DELETE remove o recurso. Deve ser idempotente — deletar um recurso que já foi deletado deve retornar 404, não erro 500.
RESPOSTAS POSSÍVEIS PARA DELETE
204
No Content. Deletado com sucesso. Sem body.
200
OK com body confirmando o que foi deletado.
404
Not Found. Recurso não existia.
403
Forbidden. Não autorizado a deletar.
soft delete
Em muitos sistemas, DELETE não apaga fisicamente — seta deleted_at. Permite auditoria, recuperação e integridade referencial. Considere sempre.CRUD mapeado para HTTP
A grade completa de operações CRUD em REST:
GET /users
Read All
Lista todos
GET /users/1
Read One
Busca um
POST /users
Create
Cria novo
PUT /users/1
Replace
Substitui completo
PATCH /users/1
Update
Atualiza parcial
DELETE /users/1
Delete
Remove
javascript
// PUT vs PATCH — diferença prática const express = require('express') const app = express() app.use(express.json()) // PUT — substitui o recurso inteiro app.put('/users/:id', async (req, res) => { const { name, email, role } = req.body if (!name || !email || !role) { return res.status(400).json({ error: 'Campos obrigatórios' }) } // UPDATE users SET name=?, email=?, role=? WHERE id=? res.json({ id: req.params.id, name, email, role }) }) // PATCH — atualiza apenas o que foi enviado app.patch('/users/:id', async (req, res) => { const updates = req.body // só os campos enviados // UPDATE users SET ...updates WHERE id=? res.json({ id: req.params.id, ...updates }) }) // DELETE — soft delete app.delete('/users/:id', async (req, res) => { // UPDATE users SET deleted_at=NOW() WHERE id=? res.status(204).send() })
quiz · aula 22
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Qual a diferença entre PUT e PATCH?
QUESTÃO 02
Qual status code indica que um DELETE foi bem-sucedido sem body?
QUESTÃO 03
O que é 'soft delete'?
0/3