endpoints • Métodos do HTTP • Status do HTTP • JSON de resposta • Tratamento de erros • Dicas de segurança • Ferramenta para documentação de APIs • Considerações finais
• Visualizando um cliente /clientes/{cliente_id} • Executando uma ação de recurso /clientes/{cliente_id}/login • Visualizando uma determinada compra de um cliente /clientes/{cliente_id}/compras/{compra_id}
de endpoints: • /clientes/1/compras/2/items/3 • Mantenha no máximo um duplo encadeamento de endpoints: • /clientes/1/compras/2 • /compras/2/items/3 • Utilize nomes em plural para recursos e verbos para ações: • /clientes/1/login
clientes • GET /clientes/1 - Visualiza um cliente • POST /clientes - Cadastra um novo cliente • PUT /clientes/1 - Atualiza todos os dados do cliente • PATCH /clientes/1- Atualiza alguns dados do cliente • DELETE /clientes/1- Exclui um cliente
- Status de redirecionamento 4xx - Status de erro no cliente 5xx - Status de erro no servidor • Exemplos de status mais utilizados: • 200 - OK, 201 - Created, 204 - No Content • 404 - Not Found, 401- Unauthorized, 405 - Method Not Allowed • 412 - Precondition Failed, 411 - Length Required, 408 - Request Timeout • 500 - Internal Server Error, 501 - Not Implemented • Veja mais status em: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html • Dica: Padronize sua API para usar entre 7-12 status codes.
“João", “idade”: 18 } Use UUID como id de objetos (campo code), evite id de banco de dados. Evite retornar objetos que não estejam em relacionamento, neste caso crie endpoints específicos para retornar cada um desses objetos. Retornando objetos relacionados { “code”: “12312cA”, “nome”: “João”, “compra”: { “code”: “13333A”, “valor”: 10.00 } }
{ “code”: “0001", “message”: “Acesso negado!” } Erros de campos específicos { “code”: “0002”, “errors”: [ {“nome”: [“Nome em branco”]}, {“idade”: [“Idade em branco”, “Você é menor de idade”]} ] } • Utilize corretamente os códigos 4xx ou 5xx do HTTP para definir seu respectivo status do erro. • Não é obrigatório! Mas trabalhar com códigos de erros internos é uma boa prática também
do consumo da api para algumas ou as principais linguagens programação. Exemplos: api-client-node, api-client-java, api-client-ruby… • APIs de referência para estudos… • Heroku: https://devcenter.heroku.com/categories/platform-api Github: https://developer.github.com/v3 Twitter: https://dev.twitter.com/rest/public Facebook: https://developers.facebook.com • MarketPlace com várias APIs públicas: http://www.publicapis.com