SlideShare uma empresa Scribd logo
1 de 78
Baixar para ler offline
Renan Petronilho Sant Anna
renan.petronilho@sensedia.com
@renanpetronilho
Petterson Henrique Andrade
petterson.andrade@sensedia.com
@pett4j
Claudenir Freitas
claudenir.machado@sensedia.com
@claudenir_cf
Agenda
API First
Boas práticas
Testes
Objetivo
Desenhar e testar apis ...
O que é API FIRST?
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!
2- Your API comes first, then the implementation
https://medium.com/adobe-io/three-principles-of-api-first-design-fa6666d9f694
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
Top 5 motivos para o API First
Mobile First
https://soulfulhustle.com/mobile-first-vs-responsive/
Artificial Intelligence - AI First
IoT
Microservices Architecture
http://microservices.io/patterns/microservices.html
http://microservices.io/patterns/apigateway.html
API Gateway
DevOps
Dev Ops
API First
“Vou criar o meu padrão que será melhor do que
REST com Restful.
Go Horse Bible - Capítulo 1, versículo 50
Criar meu protocolo ou usar padrões?
https://medium.com/adobe-io/three-principles-of-api-first-design-fa6666d9f694
Common Description Language?
Padrões - Não reinvente a roda
Common Description Language?
Documentação
Common Description Language?
Portal de desenvolvedores
Design de APIs
URI
Versão
URI: https://api.mycompany.com/name-of-api/v2/resource
HTTP ou
HTTPS
Seu domínio Nome da API
(opcional)
Recursos e
Parâmetros
Nunca quebre o cliente!!
Outras alternativas:
• Twilio: /2010-04-01/Accounts/
• Salesforce.com: /services/data/v40.0/limits
Recursos
Substantivos
Plural
Verbos
Coleção
/pedidos
Elemento
/pedidos/{id}
Sub-Elemento
/pedidos/{id}/itens/{id}
Sub-Coleção
/pedidos/{id}/itens
/getAccount
/getAllAccounts
/createDirectory
/updateGroupName
/findClientById
RPC?
Métodos HTTP
GET POST PUT
DELETE PATCH OPTIONS
HEAD
HEADOPTIONSPATCHDELETEPUTPOSTGET
Método de Consulta
GET /pedidos
GET /pedidos/10
GET /pedidos/10/itens
HEADOPTIONSPATCHDELETEPUTPOSTGET
Método para “Criação”
POST /clientes/98W353s1/enderecos
{
"endereco": "Av. Brigadeiro Faria Lima",
"numero": "3800",
"complemento": "18o. Andar",
"bairro": "Itaim Bibi",
"cidade": "São Paulo",
"estado": "SP",
"cep": "04538-132"
}
HEADOPTIONSPATCHDELETEPUTPOSTGET
Método para “Atualização”
PUT /clientes/98W353s1/enderecos/1
{
"endereco": "Av. Brigadeiro Faria Lima",
"numero": "2000",
"complemento": "18o. Andar",
"bairro": "Itaim Bibi",
"cidade": "São Paulo",
"estado": "SP",
"cep": "04538-132"
}
HEADOPTIONSPATCHDELETEPUTPOSTGET
Método para Remoção
DELETE /pedidos/98w351
DELETE /users/562w3/photos
HEADOPTIONSPATCHDELETEPUTPOSTGET
Método para atualização parcial
PATCH /pedidos/98w351
PATCH /users/562w3
{
"status": "cancelado"
}
{
"email": "renan.petronilho@sensedia.com"
}
HEADOPTIONSPATCHDELETEPUTPOSTGET
Quais métodos são permitidos?
OPTIONS /clientes
Allow: HEAD, GET, POST, OPTIONS
HEADOPTIONSPATCHDELETEPUTPOSTGET
Quero ver apenas o Header
HEAD /clientes
Date: 03-08-2017
Content-Type: application/json
Content-Length: 1024
Códigos de estado HTTP
● 200 - OK
● 201 - Criado
● 202 - Aceito
● 204 - Sem Conteúdo
Resultado OK
● 400 - Erro no Cliente
● 404 - Não encontrado
● 413 - Request muito
grande
● 429 - Muitas requisições
Erro no Cliente
● 500 - Erro no Servidor
● 503 - Serviço indisponível
● 504 - Gateway Time-Out
Erro no Servidor
https://httpstatuses.com/ http://www.restapitutorial.com/httpstatuscodes.html
500400200
GET /candidatos?estado=SP&partido=PP
[
{
"id": "1532962",
"apelido": "PAULO MALUF",
"nome": "PAULO SALIM MALUF",
"numero": "1111",
"cargo": "Deputado Federal",
"estado": "SP",
"partido": "PP",
"reeleicao": true
}
]
Status & Error Codes
200 OK
500400200
POST /items/1234/bids
{
"amount" : 602.99
}
Status & Error Codes
201 Created
201 Created
Location: /items/1234/bids/100001
{
"amount" : 602.99,
"current_bid" : 510,
"winning" : true
}
500400200
Status & Error Codes
202 ACCEPTED
POST /items/1234/bids
{
"amount" : 602.99
}
500400200
DELETE /items/1234
Status & Error Codes
204 Deleted
Retorno vazio
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
}
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
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”
}
Filtro e Paginação
Filtro
GET /produtos/search?q=macbook
Busca global
GET /pedidos?status=concluido
Busca com escopo(subconjuntos)
GET /pedidos/12AF?_fields=numero,data,valor
Respostas parciais
Paginação
GET /produtos?_offset=50&_limit=25
Recomendação
Linkedin ?start=50&count=25
Outras opções
Instagram ?min_id=3091&max_id=3120&count=25
Hypermedia
Hypermedia
*POX = Plain Old XML, Richardson Maturity Model http://martinfowler.com/articles/richardsonMaturityModel.html
HATEOAS
Hypermedia As The Engine Of Application State
COM HypermediaSEM Hypermedia
GET /produtos/search?q=macbook
{
"results": [
{
"id": 123,
"name": "Macbook Air 2014 LIKE NEW",
"price": "1120"
}
]
}
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"
}
]
}
Testes
Testes
Manual Automático
Técnicas de Testes
- Teste estrutural
- Nível de código
Caixa Branca
- Teste funcional
- Nível de negócio
Caixa Preta
Testes
Mike Cohn, Succeeding with Agile.
Testes
Tipos de testes
Teste de unitário
Testes
Tipos de testes
Teste de contrato
Teste de integração
Teste de regressão
Teste de stress
Testes
Tipos de testes
Testes funcionais
Testes de aceitação
Beleza… e aí?
Talk is cheap. Show me code!
Linus Torvalds
Testes
Go!

Mais conteúdo relacionado

Semelhante a Api first desenhando e testando sua api like a boss

WordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPressWordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPressRuan Barbosa
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPHerberth Amaral
 
Workshop PHP - Nível básico
Workshop PHP - Nível básicoWorkshop PHP - Nível básico
Workshop PHP - Nível básicoinopus
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santosfsolari
 
Site de e-commerce Sabor & Saude
Site de e-commerce Sabor & SaudeSite de e-commerce Sabor & Saude
Site de e-commerce Sabor & SaudeMarco Coghi
 
Site de e-commerce Sabor & Saude
Site de e-commerce Sabor & SaudeSite de e-commerce Sabor & Saude
Site de e-commerce Sabor & SaudeMarco Coghi
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesWaldemar Neto
 
PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...
PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...
PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...Rodrigo Wanderley de Melo Cardoso
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosFábio Rosato
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]Igor Santos
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012Carlos Casalicchio
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Rogerio Cordeiro
 

Semelhante a Api first desenhando e testando sua api like a boss (20)

WordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPressWordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPress
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIP
 
Workshop PHP - Nível básico
Workshop PHP - Nível básicoWorkshop PHP - Nível básico
Workshop PHP - Nível básico
 
REST-fuuuu
REST-fuuuuREST-fuuuu
REST-fuuuu
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santos
 
Site de e-commerce Sabor & Saude
Site de e-commerce Sabor & SaudeSite de e-commerce Sabor & Saude
Site de e-commerce Sabor & Saude
 
Site de e-commerce Sabor & Saude
Site de e-commerce Sabor & SaudeSite de e-commerce Sabor & Saude
Site de e-commerce Sabor & Saude
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservices
 
E checkscore2
E checkscore2E checkscore2
E checkscore2
 
PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...
PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...
PHP Conference Brazil 2015 - PHP + Sharepoint - Integrando Serviços Microsoft...
 
Design de APIs REST
Design de APIs RESTDesign de APIs REST
Design de APIs REST
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travados
 
Gerenciamento do escopo
Gerenciamento do escopoGerenciamento do escopo
Gerenciamento do escopo
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Sap fiori launchpad visao pratica
Sap fiori launchpad   visao praticaSap fiori launchpad   visao pratica
Sap fiori launchpad visao pratica
 
Básico PHP: Introdução HTML
Básico PHP: Introdução HTMLBásico PHP: Introdução HTML
Básico PHP: Introdução HTML
 
Introdução ao PHP Parte 1
Introdução ao PHP Parte 1Introdução ao PHP Parte 1
Introdução ao PHP Parte 1
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)
 
Python 08
Python 08Python 08
Python 08
 

Api first desenhando e testando sua api like a boss