SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
APIs: o que são, onde vivem e
como se alimentam
O que é uma API?
a.k.a. Application Programming Interface
2
1.
Interface
E nada mais.
Mesmo.
3
Uma Sistema
API
Sistema /
Serviço
Boas práticas, RESTful e outras
histórias
Pelo bem de todos os devs
4
2.
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
5
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/
6
Versionamento
» Exponha só a versão cheia (/v1/users ou /v2/users)
» Evite breaking changes:
- renomear campos
- remover recursos
- remover campos
- remover endpoints
7
Padronização
» Padronize as respotas: json, xml?
» Consistência entre os diferentes endpoints
» Status codes
» Cabeçalhos só quando realmente necessário
8
Dicas para montar uma resposta decente
» Wrap de resposta:
{
”data”: {
”nome”: ”diana”,
”cor”: ”vermelho”
}
}
9
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
10
Segurança
» Não exponha IDs sequenciais
» Limite de requisições por segundo
» SEMPRE use https
» Não use logins por senha
11
Documentação
O coração de uma boa API
12
3.
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
13
Autenticação
Login e senha NÃO
14
4.
Autenticação
» OAuth 2.0
- segue um fluxo de autorização
» JWT
- utiliza tokens de autenticação
15
Diana Arnos
Tech daimyo @ high stakes
academy
twitter: dianaarnos
facebook: dianaarnos
github: dianaarnos
instagram: dianaarnos
16OBRIGADA!
CREDITS
Special thanks to all the people who made and released these awesome
resources for free:
» Presentation template by SlidesCarnival
» Photographs by Unsplash
» Diverse device hand photos by Facebook Design Resources
17

Mais conteúdo relacionado

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

Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Fabio Vieira Mello
 
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...Rubens Guimarães - MTAC MVP
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesClavis Segurança da Informação
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Clavis Segurança da Informação
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR, UnB
 
Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11Rafael Souza
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftRubens Guimarães - MTAC MVP
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebMatheus Fidelis
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Alex Hübner
 
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
 
ENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebMagno Logan
 

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

Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
 
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
 
Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
 
Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
 
Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11
 
Api todo list
Api todo listApi todo list
Api todo list
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Node.js: serious business
Node.js: serious businessNode.js: serious business
Node.js: serious business
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação Web
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
 
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
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
Design de APIs REST
Design de APIs RESTDesign de APIs REST
Design de APIs REST
 
ENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na Web
 

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
 

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

  • 1. APIs: o que são, onde vivem e como se alimentam
  • 2. O que é uma API? a.k.a. Application Programming Interface 2 1.
  • 3. Interface E nada mais. Mesmo. 3 Uma Sistema API Sistema / Serviço
  • 4. Boas práticas, RESTful e outras histórias Pelo bem de todos os devs 4 2.
  • 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 5
  • 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/ 6
  • 7. Versionamento » Exponha só a versão cheia (/v1/users ou /v2/users) » Evite breaking changes: - renomear campos - remover recursos - remover campos - remover endpoints 7
  • 8. Padronização » Padronize as respotas: json, xml? » Consistência entre os diferentes endpoints » Status codes » Cabeçalhos só quando realmente necessário 8
  • 9. Dicas para montar uma resposta decente » Wrap de resposta: { ”data”: { ”nome”: ”diana”, ”cor”: ”vermelho” } } 9
  • 10. 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 10
  • 11. Segurança » Não exponha IDs sequenciais » Limite de requisições por segundo » SEMPRE use https » Não use logins por senha 11
  • 12. Documentação O coração de uma boa API 12 3.
  • 13. 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 13
  • 15. Autenticação » OAuth 2.0 - segue um fluxo de autorização » JWT - utiliza tokens de autenticação 15
  • 16. Diana Arnos Tech daimyo @ high stakes academy twitter: dianaarnos facebook: dianaarnos github: dianaarnos instagram: dianaarnos 16OBRIGADA!
  • 17. CREDITS Special thanks to all the people who made and released these awesome resources for free: » Presentation template by SlidesCarnival » Photographs by Unsplash » Diverse device hand photos by Facebook Design Resources 17