APIs REST - Introdução e alguns conceitos
Post on 24-Jan-2017
36 Views
Preview:
Transcript
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!
top related