Padrões de design para APIs REST autoescaláveis sem complicação
APIs REST - Introdução e alguns conceitos
-
Upload
felix-costa -
Category
Technology
-
view
36 -
download
2
Transcript of APIs REST - Introdução e alguns conceitos
![Page 1: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/1.jpg)
API REST
![Page 2: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/2.jpg)
Quem sou
- Full-stack developer- Sotero Tech- @fxcosta- fxcosta.github.io
![Page 3: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/3.jpg)
O que é uma API?
- Application Programming Interface
- Uma interface de comunicação entre sistemas- System calls, por exemplo
- API vs Web API / Web Services
![Page 4: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/4.jpg)
![Page 5: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/5.jpg)
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
![Page 6: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/6.jpg)
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
![Page 7: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/7.jpg)
Cliente-Servidor
- O que acontece quando eu digito www.semanacts.com.br no meu navegador?
![Page 8: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/8.jpg)
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
![Page 9: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/9.jpg)
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
![Page 10: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/10.jpg)
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
-
![Page 11: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/11.jpg)
![Page 12: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/12.jpg)
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
![Page 13: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/13.jpg)
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
![Page 14: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/14.jpg)
Tipos de dados: JSON vs XML
![Page 15: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/15.jpg)
REST é muito mais...
![Page 16: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/16.jpg)
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
![Page 17: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/17.jpg)
Vamos ao livecoding!
![Page 18: APIs REST - Introdução e alguns conceitos](https://reader031.fdocument.pub/reader031/viewer/2022022201/588775461a28ab22358b7325/html5/thumbnails/18.jpg)