Este documento discute APIs, incluindo o que são APIs, como funcionam, boas práticas de desenvolvimento de APIs e autenticação. APIs permitem a comunicação entre sistemas através de interfaces de programação. Uma API bem projetada segue padrões como REST, usa códigos de status HTTP, versionamento, documentação e autenticação com tokens ao invés de login e senha.
4. 2. BOAS PRÁTICAS, RESTFUL E OUTRAS HISTÓRIAS
Pelo bem de todos os devs
5. RESTFUL
• REST: REpresentational State Transfer
• Requisições e respostas via HTTP
• As transações são identificadas via métodos: GET, POST, PUT, PATCH, DELETE
• Cada recurso deve ter sua própria URL
• Os recursos devem ser diferenciados por IDs
• Stateless
GET http://www.aquelaurlmarota.com/users/12345/orders
6. STATUS CODES
Toda resposta traz um status code
• 2xx: 200, 201, 204… SUUUCESSOOOOO!
• 3xx: 302, 304… redirecionamentos
• 4xx: 400, 401, 403, 404… erros client side
• 5xx: 500… erros server side
http://http.cat/
8. VERSIONAMENTO
• Exponha só a versão cheia (/v1/users ou /v2/users)
• Evite breaking changes:
• renomear campos
• remover recursos
• remover endpoints
• mudar o formato da resposta
9. PADRONIZAÇÃO
• Padronize as respotas: json, xml?
• Consistência entre os diferentes endpoints
• Status codes
• Cabeçalhos só quando realmente necessário
10. DICAS PARA MONTAR UMA
RESPOSTA DECENTE
• Wrap de resposta:
{
”data”: {
”nome”: ”diana”,
”cor”: ”vermelho”
}
}
11. DICAS PARA MONTAR UMA
RESPOSTA DECENTE
• Ao retornar um erro, mostre código E descrição
{
”errorCode”:123,
”errors”: [
”special characters are not alowed”,
”user CPF is required”
]
}
• NUNCA exponha erros internos ao usuário
12. SEGURANÇA
• Não exponha IDs sequenciais
• Limite de requisições por segundo
• SEMPRE use https
• Não use logins por senha
14. DOCUMENTAÇÃO
• ”Uma API só é tão boa quanto sua documentação” (apiary.io)
• Quem consome? Desenvolvedores, não máquinas
• Sugestão: swagger (http://swagger.io/)
• Documentation First
• EMPATIA