O documento discute princípios e boas práticas para desenvolvimento de APIs com foco no cliente, como API First. Aborda conceitos como design de recursos, métodos HTTP, códigos de resposta, paginação, hipermídia e testes automatizados para garantir a qualidade da API.
10. 1-Your API is the first user interface of your application
https://medium.com/adobe-io/three-principles-of-api-first-design-fa6666d9f694
Compromisso com APIs
Anyone who doesn’t do this will be fired. Thank you; have a nice day!
11. 2- Your API comes first, then the implementation
https://medium.com/adobe-io/three-principles-of-api-first-design-fa6666d9f694
12. 3- Your API is described (and maybe even self-descriptive)
https://medium.com/adobe-io/three-principles-of-api-first-design-fa6666d9f694
● GET /podcasts- Retorna a lista de podcasts
● GET /podcasts/cbdf-34rf-ee3r4- Retorna o podcast com id
“cbdf-34rf-ee3r4”
● POST /podcasts- Cria um novo podcast
● PUT /podcasts/cbdf-34rf-ee3r4- Altera os dados de um podcast
● PATCH /podcasts/cbdf-34rf-ee3r4- Altera somente alguns
dados de um podcast
● DELETE /podcasts/cbdf-34rf-ee3r4- Remove um podcast
56. 500400200
GET /candidatos
Status & Error Codes
400 Requisição inválida
400 Requisição inválida
{
"status" : 400,
"code" : 40377,
"message" : "Parâmetro 'estado' não pode ser nulo
ou vazio"
"more" : https://dev.empresa.com/errors/40377
}
57. 500400200
Status & Error Codes
Outros erros comuns
Não autorizado
Proibido
Não encontrado
401
403
404
Entidade de solicitação muito grande
Entidade improcessável
Muitas requisições
413
422
429
58. 500400200
PUT /pedidos/995620
Status & Error Codes
500 Erro interno do servidor
{
"status" : “CANCELED”
}
500 Internal Server Error
{
"status" : 500,
"message" : “Ops, algo saiu errado”
}
64. Hypermedia
*POX = Plain Old XML, Richardson Maturity Model http://martinfowler.com/articles/richardsonMaturityModel.html
HATEOAS
Hypermedia As The Engine Of Application State
65. COM HypermediaSEM Hypermedia
GET /produtos/search?q=macbook
{
"results": [
{
"id": 123,
"name": "Macbook Air 2014 LIKE NEW",
"price": "1120"
}
]
}
66. COM HypermediaSEM Hypermedia
GET /produtos/search?q=macbook
{
"results": [
{
"_links": [
{"rel": "self","uri": "/items/123"},
{"rel": "bids","uri": "/items/123/bids"},
{"rel": "win","uri": "/items/123/bids?q=win"}
],
"name": "Macbook Air 2014 LIKE NEW",
"price": "1120"
}
]
}