REST API
Live de Python # 175
Roteiro
1. API / REST 3. Respostas
Como é uma API? O que é REST? Entendendo os códigos de resposta
2. Verbos 4. Filtros
Como dizer o que eu quero? Como especificar o que eu quero?
picpay.me/dunossauro apoia.se/livedepython PIX
Ajude o projeto
Ademar Peixoto, Alex Lima, Alex Lopes, Alexandre Harano, Alexandre Santos, Alexandre Tsuno, Alexandre
Villares, Alynne Ferreira, Alysson Oliveira, Amaziles Carvalho, André Rocha, Arnaldo Turque, Artur Zalewska, Bruno
Batista, Bruno Oliveira, Caio Nascimento, Carlos Chiarelli, Cleber Santos, César Almeida, Davi Ramos, David
Kwast, Diego Guimarães, Diego Ubirajara, Dilenon Delfino, Donivaldo Sarzi, Elias Soares, Eric Niens, Eugenio
Mazzini, Everton Alves, Fabiano Gomes, Fabio Barros, Fabio Castro, Fabrícia Diniz, Flavkaze Flavkaze, Francisco
Alencar, Franklin Silva, Fábio Serrão, Gabriel Simonetto, Gabriel Soares, Gabriela Santiago, Geandreson Costa,
Guilherme Castro, Guilherme Felitti, Guilherme Ostrock, Henrique Machado, Israel Fabiano, Italo Silva, Johnny
Tardin, Jonatas Leon, Jonatas Oliveira, Jorge Plautz, Jose Mazolini, José Prado, João Lugão, João Schiavon,
Juan Gutierrez, Jônatas Silva, Júlia Kastrup, Kaio Peixoto, Kaneson Alves, Leonardo Cruz, Leonardo Galani,
Leonardo Mello, Lidiane Monteiro, Lorena Ribeiro, Lucas Barros, Lucas Mello, Lucas Mendes, Lucas Teixeira,
Lucas Valino, Luciano Ratamero, Maiquel Leonel, Marcela Campos, Marcelo Rodrigues, Maria Clara, Marina
Passos, Matheus Vian, Natan Cervinski, Nicolas Teodosio, Osvaldo Neto, Patric Lacouth, Patricia Minamizawa,
Patrick Gomes, Paulo Tadei, Pedro Pereira, Peterson Santos, Rafael Lino, Reinaldo Silva, Renan Moura, Revton
Silva, Rodrigo Ferreira, Rodrigo Mende, Rodrigo Vaccari, Ronaldo Silva, Sandro Mio, Silvio Xm, Thiago Araujo,
Thiago Borges, Thiago Bueno, Tyrone Damasceno, Vinícius Bastos, Vítor Gomes, Wendel Rios, Wesley Mendes,
Willian Lopes, Willian Rosa, Wilson Duarte, Yury Barros, Érico Andrei
Obrigado você
Afinal o que é
uma API? API
O que é uma API?
Uma API (Application Programming Interface) é um conjunto de definições
e protocolos usados no desenvolvimento e na integração de aplicações.
O que é uma API?
Uma API é um conjunto de definições e protocolos usados no
desenvolvimento e na integração de aplicações.
Requisição
Cliente Servidor
Resposta
Um contrato
Basicamente uma api é contrato de como os dados serão enviados e
quais respostas vamos obter quando um dado específico for solicitado.
Um contrato
Basicamente uma API é contrato de como os dados serão enviados e
quais respostas vamos obter quando um dado específico for solicitado.
Dados conforme o
contrato
Cliente Servidor
Dados conforme o
contrato
Outra sigla difícil? REST
O que é REST?
REST (Representational State Transfer) é um conjunto de "regras" e
limitações para que a API não seja complexa de mais.
Basicamente o que pedimos a uma API é o seu estado [State] e ela nos
retorna uma Representação [Representational] dele em uma
Transferência [Transfer] de dados.
O que é REST?
Qual seu estado em
relação aos usuários
cadastrados?
Cliente Servidor
Segue:
1, Eduardo, 28 anos
2, Fausto, 3 anos
3, Jorge, 15 anos
Que ferramentas podemos usar em Python?
Falcon
CherryPy AIOHTTO Tornado
Que ferramentas podemos usar em Python?
Falcon
CherryPy AIOHTTO Tornado
pip install flask
Vamos instalar o Flask
Verbos Como dizer o que
eu quero?
Como funciona a comunicação?
Me dá uma coisa aí
Cliente Servidor
Quando pedimos algo
para API, fazemos uma
requisição
GET
Nossa primeiro exemplo
Nossa primeiro exemplo
Tá, OK! Mas como rodar esse código?
pip install httpie
Instalando um cliente
Como conversar com ele?
Nosso servidor, tem um endereço.
(http://localhost)
Tem uma porta (5000)
Servidor E precisamos acessar um recurso ou como
costumamos chamar, endpoint
http://localhost:5000/recurso
O comando com httpie
Cont
A especificação rato
Contrato
Lembra que falamos antes sobre contrato? Existe um formato padrão para
especificação que é o OpenAPI. [Esse tema vale uma live???]
Que é como dizemos o que deve ser enviado API e o que será respondido
quando um pedido for feito
pip install flask-pydantic-spec
OpenAPI
Como esses Represe
dados devem ser
representados? ntação
Representação
Existem vários formatos para a representação desses dados. O formato
mais comum atualmente é json.
Embora a representação do dado possa ser feita usando XML, e também
YAML
Representação
{
"field": "value",
"chave": "valor",
"nome": "Eduardo"
}
Representação
Voltando aos Verbos
O protocolo HTTP é a base usada por trás das APIs REST e as “chamadas”
são feitas partindo de “tipos” de requisições. Vamos conversar sobre as
mais populares, mas ao total são 9 verbos.
GET Pedir os recursos, dados. Ler o que está lá no servidor
POST Criar um recurso, inserir um dado / registro
PUT Alterar um registro (mandando todos os campos)
DELETE Deletar um recurso / registro / dado
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6
Voltando aos Verbos
O protocolo HTTP é a base usada por trás das APIs REST e as “chamadas”
são feitas partindo de “tipos” de requisições. Vamos conversar sobre as
mais populares, mas ao total são 9 verbos.
GET Seguro / Indepotente Pedir os recursos, dados. Ler o que está lá no servidor
POST Criar um recurso, inserir um dado / registro
PUT Indepotente Alterar um registro (mandando todos os campos)
DELETE Indepotente Deletar um recurso / registro / dado
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6
Respo
stas Entendendo as
respostas
CÓDIGOS
Para cada requisição no servidor, independentemente do verbo de
“chamada” retorna alguns códigos de resposta. Eles são divididos em 5
grupos. Vamos conversar só sobre os mais recorrentes
200 Códigos de sucesso
201 Criado
204 Sem conteúdo (usado para deletar com sucesso, por exemplo)
400 Códigos de erro
404 Não encontrado
500 Erro no servidor
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6
Filtros Melhorando
nossa busca
picpay.me/dunossauro apoia.se/livedepython PIX
Ajude o projeto