API REST
Como funciona?
• Fluxo da requisição e resposta:
• Requisição feita por um cliente;
• Resposta retornada através de uma estrutura de dados;
• Cliente recebe resposta e processa resultado;
• As rotas utilizam métodos HTTP:
• GET http:!//[Link]/users
Método HTTP
• POST http:!//[Link]/users
Recurso / Rota
• PUT http:!//[Link]/users/1
Parâmetro
• DELETE http:!//[Link]/users/1
Benefícios
• Múltiplos clientes (front-end), mesmo back-end;
• Protocolo de comunicação padronizado;
• Mesma estrutura para web / mobile / API pública;
• Comunicação com serviços externos;
JSON (JavaScript Object Notation)
{
"user": {
"name": "Diego Fernandes",
"email": "diego@[Link]",
"tech": ["ReactJS", "NodeJS", "React Native"],
"company": {
"name": "Rocketseat",
"url": "https:!//[Link]"
}
}
}
Conteúdo da requisição
GET http:!//[Link]/company/1/users?page=2 POST http:!//[Link]/company/1/users
{
Route "user": {
"name": "Diego Fernandes",
Route Params "email": "diego@[Link]",
"tech": ["ReactJS", "NodeJS", "React Native"]
Query Params }
}
{
"Locale": "pt_BR"
}
Utilizamos Body ao invés dos Query Params para não
poluir a URL e não mostrar campos sensíveis. Body (Apenas POST/PUT)
Headers
HTTP codes
• 1xx: Informational • 4xx: Client Error
• 2xx: Success • 400: BAD REQUEST
• 401: UNAUTHORIZED
• 200: SUCCESS
• 404: NOT FOUND
• 201: CREATED
• 3xx: Redirection • 5xx: Server Error
• 500: INTERNAL SERVER ERROR
• 301: MOVED PERMANENTLY
• 302: MOVED
Autenticação JWT
POST http:!//[Link]/sessions
{
"email": "diego@[Link]",
Token JWT
"password": "123456"
}
Headers (Tipo de token, algoritmo) [Link]
OiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIi
Payload (Dados adicionais)
wiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2
Assinatura QT4fwpMeJf36POk6yJV_adQssw5c
BORA CODAR!