SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
APIS: O QUE SÃO, ONDE
VIVEM E COMO SE
ALIMENTAM
1. APIS: O QUE SÃO, ONDE VIVEM E COMO SE
ALIMENTAM
a.k.a. Application Programming Interface
UMA
INTERFACE
E nada mais.
Mesmo.
Sistema
API
Sistema /
Serviço
2. BOAS PRÁTICAS, RESTFUL E OUTRAS HISTÓRIAS
Pelo bem de todos os devs
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
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/
STATUS CODES
https://http.cat/200
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
PADRONIZAÇÃO
• Padronize as respotas: json, xml?
• Consistência entre os diferentes endpoints
• Status codes
• Cabeçalhos só quando realmente necessário
DICAS PARA MONTAR UMA
RESPOSTA DECENTE
• Wrap de resposta:
{
”data”: {
”nome”: ”diana”,
”cor”: ”vermelho”
}
}
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
SEGURANÇA
• Não exponha IDs sequenciais
• Limite de requisições por segundo
• SEMPRE use https
• Não use logins por senha
3. DOCUMENTAÇÃO
O coração de uma boa API
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
4. AUTENTICAÇÃO
Login e senha NÃO
AUTENTICAÇÃO
• OAuth 2.0
• segue um fluxo de autorização
• JWT
• utiliza tokens de autenticação
OBRIGADA!
Diana Arnos
tech daimyo @ high stakes
academy
twitter: dianaarnos
facebook: dianaarnos
github: dianaarnos
instagram: dianaarnos
https://joind.in/talk/a4771

Mais conteúdo relacionado

Semelhante a O que são APIs: onde vivem e como se alimentam

Rest Java One
Rest Java OneRest Java One
Rest Java OneDextra
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014Tiago Marchetti Dolphine
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CINathanael Silva
 
Testando API REST - Parte 1
Testando API REST - Parte 1Testando API REST - Parte 1
Testando API REST - Parte 1alinebiath
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lioLuis Moraes Junior
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveisThales Lima
 
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
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e RespostaThiago Rondon
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
Do Rest Ao Restfull - Rio Jug
Do Rest Ao Restfull - Rio JugDo Rest Ao Restfull - Rio Jug
Do Rest Ao Restfull - Rio JugSergio Azevedo
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09Felipe Ribeiro
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 

Semelhante a O que são APIs: onde vivem e como se alimentam (20)

Rest Java One
Rest Java OneRest Java One
Rest Java One
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
Como um grande sistema REST funciona
Como um grande sistema REST funcionaComo um grande sistema REST funciona
Como um grande sistema REST funciona
 
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
 
Testando API REST - Parte 1
Testando API REST - Parte 1Testando API REST - Parte 1
Testando API REST - Parte 1
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lio
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveis
 
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]
 
Web apis
Web apisWeb apis
Web apis
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e Resposta
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Do Rest Ao Restfull - Rio Jug
Do Rest Ao Restfull - Rio JugDo Rest Ao Restfull - Rio Jug
Do Rest Ao Restfull - Rio Jug
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 

Mais de Diana Ungaro Arnos

trabalho remoto é questão de cultura - 19o encontro locaweb
trabalho remoto é questão de cultura - 19o encontro locawebtrabalho remoto é questão de cultura - 19o encontro locaweb
trabalho remoto é questão de cultura - 19o encontro locawebDiana Ungaro Arnos
 
PHP distribuído e paralelo: multithread + stream sockets
PHP distribuído e paralelo: multithread + stream socketsPHP distribuído e paralelo: multithread + stream sockets
PHP distribuído e paralelo: multithread + stream socketsDiana Ungaro Arnos
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesDiana Ungaro Arnos
 
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016Diana Ungaro Arnos
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksDiana Ungaro Arnos
 
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDPHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDDiana Ungaro Arnos
 
Testes: existe vida antes do TDD
Testes: existe vida antes do TDDTestes: existe vida antes do TDD
Testes: existe vida antes do TDDDiana Ungaro Arnos
 

Mais de Diana Ungaro Arnos (7)

trabalho remoto é questão de cultura - 19o encontro locaweb
trabalho remoto é questão de cultura - 19o encontro locawebtrabalho remoto é questão de cultura - 19o encontro locaweb
trabalho remoto é questão de cultura - 19o encontro locaweb
 
PHP distribuído e paralelo: multithread + stream sockets
PHP distribuído e paralelo: multithread + stream socketsPHP distribuído e paralelo: multithread + stream sockets
PHP distribuído e paralelo: multithread + stream sockets
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de Testes
 
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalks
 
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDPHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
 
Testes: existe vida antes do TDD
Testes: existe vida antes do TDDTestes: existe vida antes do TDD
Testes: existe vida antes do TDD
 

O que são APIs: onde vivem e como se alimentam

  • 1. APIS: O QUE SÃO, ONDE VIVEM E COMO SE ALIMENTAM
  • 2. 1. APIS: O QUE SÃO, ONDE VIVEM E COMO SE ALIMENTAM a.k.a. Application Programming Interface
  • 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
  • 16. AUTENTICAÇÃO • OAuth 2.0 • segue um fluxo de autorização • JWT • utiliza tokens de autenticação
  • 17. OBRIGADA! Diana Arnos tech daimyo @ high stakes academy twitter: dianaarnos facebook: dianaarnos github: dianaarnos instagram: dianaarnos https://joind.in/talk/a4771