SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
API REST
Quem sou
- Full-stack developer
- Sotero Tech
- @fxcosta
- fxcosta.github.io
O que é uma API?
- Application Programming Interface
- Uma interface de comunicação entre sistemas
- System calls, por exemplo
- API vs Web API / Web Services
Por que ter uma API?
- Expor certos dados e recursos é uma estratégia de negócios e inovação
(Ricardo Peloi).
- Grandes players tem uma API aberta
- Integrar nossa plataforma a terceiros (e-commerce, SaaS)
- Gerar mais mercado e expandir o público-alvo
- Gerar desenvolvimento da plataforma para outros meios
- Organização interna do setor de TI
REST APIs
- Representation State Transfer
- estilo arquitetural
- regras e convenções
- Criado por Roy Fielding em sua tese de doutorado em filosofia
- Co-autor do HTTP o/
- REST é guiado pelas boas práticas de uso do HTTP
- Uso adequado dos métodos HTTP, URLs, Headers, etc.
- REST não é só pra API
Cliente-Servidor
- O que acontece quando eu digito www.semanacts.com.br no meu navegador?
Recurso
- Marco zero: em REST tudo é recurso. Representação!
- Recurso: representação de um objeto virtual
- uma image, uma coisa da vida real, uma coleção de objetos, um cliente….
- Pode ser qualquer coisa. Depende do contexto e do mapeamento
URLs
- Identificam os recursos de forma única, através de um determinado caminho
- http://localhost:8080/cervejas
- Devem ser amigáveis, semânticas e convencionalmente no plural
- http://localhost:8080/cervejas - retornam todas as cervejas
- http://localhost:8080/cervejas/2 - retorna a cerveja de identificar único 2
- http://localhost:8080/cervejas - crio uma nova cerveja
- http://localhost:8080/cervejas/2 - atualizo uma cerveja existente, no caso a de ID 2
- Relacionamentos:
- http://localhost:8080/paises/2/cervejas - todas as cervejas do pais de ID 2
- http://localhost:8080/paises/2/cervejas/3/premios - prêmios cerveja de ID 3 do país de ID 2
Métodos HTTP
- Existem 7 métodos além do GET
- POST, PUT/PATCH, DELETE, OPTIONS, HEAD, TRACE, CONNECT
- Especificam a ação que queremos tomar em cima de algum recurso
- GET http://localhost:8080/cervejas
- GET http://localhost:8080/cervejas/2
- POST http://localhost:8080/cervejas
- PUT http://localhost:8080/cervejas/2
- DELETE http://localhost:8080/cervejas/2
- HTTP header
- GET /cervejas HTTP/1.1
- Host: localhost:8080
- Accept: text/html
-
URLs com filtros e ordenação
- GET usando query string parameters
- /cervejas?pais=alemanha
- /cervejas?ordenar=idade,nome
- Filtros comuns devemos usar alias
- /cervejas/ativas ao invés de /cervejas?status=ativas
- Seleção de campos
- /cervejas?campos=id,nome,status,ano_criacao
- Paginação
- /cervejas?pagina=2&limite=30
Códigos de status do HTTP
- Toda requisição feita ao servidor retorna com um código de status.
- 1xx - Informacionais
- 2xx - Códigos de sucesso
- 3xx - Códigos de redirecionamento
- 4xx - Erros causados pelo cliente
- 5xx - Erros originados no servidor
- 200 - ok; 201 - created
- 301 - moved permanently; 303 - See Other
- 401 - Unauthorized; 404 - Not found; 405 - Method not allowed
- 500 - internal server error; 503 - service unavailable
Tipos de dados: JSON vs XML
REST é muito mais...
Referências
- http://sensedia.com/blog/apis/o-que-sao-apis-parte-1-introducao/
- https://rafaell-lycan.com/2015/construindo-restful-api-laravel-parte-1/
- https://www.casadocodigo.com.br/products/livro-rest
- https://www.youtube.com/watch?v=94YsBCoVE2s
Vamos ao livecoding!
API REST guia

Mais conteúdo relacionado

Semelhante a API REST guia

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
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)elliando dias
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduGuilherme
 
Rest Java One
Rest Java OneRest Java One
Rest Java OneDextra
 
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...iMasters
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Introdução de web
Introdução de webIntrodução de web
Introdução de webSedu
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para issoJunior Conte
 
Fsi8a Sistemas Internet
Fsi8a Sistemas InternetFsi8a Sistemas Internet
Fsi8a Sistemas InternetLuiz Domingues
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
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
 
Jornadas FCCN 2019 - Workshop "Repositórios Integrados"
Jornadas FCCN 2019 - Workshop "Repositórios Integrados"Jornadas FCCN 2019 - Workshop "Repositórios Integrados"
Jornadas FCCN 2019 - Workshop "Repositórios Integrados"FCCN - RCAAP
 
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
 

Semelhante a API REST guia (20)

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]
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)
 
Spring boot
Spring bootSpring boot
Spring boot
 
REST-fuuuu
REST-fuuuuREST-fuuuu
REST-fuuuu
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos Redu
 
Web service
Web serviceWeb service
Web service
 
Rest Java One
Rest Java OneRest Java One
Rest Java One
 
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
 
Phpmanual
PhpmanualPhpmanual
Phpmanual
 
Programando para web com php my sql - fed cox junior
Programando para web com php my sql - fed cox juniorProgramando para web com php my sql - fed cox junior
Programando para web com php my sql - fed cox junior
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Introdução de web
Introdução de webIntrodução de web
Introdução de web
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para isso
 
Fsi8a Sistemas Internet
Fsi8a Sistemas InternetFsi8a Sistemas Internet
Fsi8a Sistemas Internet
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
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
 
Jornadas FCCN 2019 - Workshop "Repositórios Integrados"
Jornadas FCCN 2019 - Workshop "Repositórios Integrados"Jornadas FCCN 2019 - Workshop "Repositórios Integrados"
Jornadas FCCN 2019 - Workshop "Repositórios Integrados"
 
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
 

API REST guia

  • 2. Quem sou - Full-stack developer - Sotero Tech - @fxcosta - fxcosta.github.io
  • 3. O que é uma API? - Application Programming Interface - Uma interface de comunicação entre sistemas - System calls, por exemplo - API vs Web API / Web Services
  • 4.
  • 5. Por que ter uma API? - Expor certos dados e recursos é uma estratégia de negócios e inovação (Ricardo Peloi). - Grandes players tem uma API aberta - Integrar nossa plataforma a terceiros (e-commerce, SaaS) - Gerar mais mercado e expandir o público-alvo - Gerar desenvolvimento da plataforma para outros meios - Organização interna do setor de TI
  • 6. REST APIs - Representation State Transfer - estilo arquitetural - regras e convenções - Criado por Roy Fielding em sua tese de doutorado em filosofia - Co-autor do HTTP o/ - REST é guiado pelas boas práticas de uso do HTTP - Uso adequado dos métodos HTTP, URLs, Headers, etc. - REST não é só pra API
  • 7. Cliente-Servidor - O que acontece quando eu digito www.semanacts.com.br no meu navegador?
  • 8. Recurso - Marco zero: em REST tudo é recurso. Representação! - Recurso: representação de um objeto virtual - uma image, uma coisa da vida real, uma coleção de objetos, um cliente…. - Pode ser qualquer coisa. Depende do contexto e do mapeamento
  • 9. URLs - Identificam os recursos de forma única, através de um determinado caminho - http://localhost:8080/cervejas - Devem ser amigáveis, semânticas e convencionalmente no plural - http://localhost:8080/cervejas - retornam todas as cervejas - http://localhost:8080/cervejas/2 - retorna a cerveja de identificar único 2 - http://localhost:8080/cervejas - crio uma nova cerveja - http://localhost:8080/cervejas/2 - atualizo uma cerveja existente, no caso a de ID 2 - Relacionamentos: - http://localhost:8080/paises/2/cervejas - todas as cervejas do pais de ID 2 - http://localhost:8080/paises/2/cervejas/3/premios - prêmios cerveja de ID 3 do país de ID 2
  • 10. Métodos HTTP - Existem 7 métodos além do GET - POST, PUT/PATCH, DELETE, OPTIONS, HEAD, TRACE, CONNECT - Especificam a ação que queremos tomar em cima de algum recurso - GET http://localhost:8080/cervejas - GET http://localhost:8080/cervejas/2 - POST http://localhost:8080/cervejas - PUT http://localhost:8080/cervejas/2 - DELETE http://localhost:8080/cervejas/2 - HTTP header - GET /cervejas HTTP/1.1 - Host: localhost:8080 - Accept: text/html -
  • 11.
  • 12. URLs com filtros e ordenação - GET usando query string parameters - /cervejas?pais=alemanha - /cervejas?ordenar=idade,nome - Filtros comuns devemos usar alias - /cervejas/ativas ao invés de /cervejas?status=ativas - Seleção de campos - /cervejas?campos=id,nome,status,ano_criacao - Paginação - /cervejas?pagina=2&limite=30
  • 13. Códigos de status do HTTP - Toda requisição feita ao servidor retorna com um código de status. - 1xx - Informacionais - 2xx - Códigos de sucesso - 3xx - Códigos de redirecionamento - 4xx - Erros causados pelo cliente - 5xx - Erros originados no servidor - 200 - ok; 201 - created - 301 - moved permanently; 303 - See Other - 401 - Unauthorized; 404 - Not found; 405 - Method not allowed - 500 - internal server error; 503 - service unavailable
  • 14. Tipos de dados: JSON vs XML
  • 15. REST é muito mais...