Skip to content

Commit 9229bec

Browse files
2 parents 8079bce + 2f744c3 commit 9229bec

File tree

6 files changed

+191
-2
lines changed

6 files changed

+191
-2
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Importando bibliotecas
2+
import requests
3+
import json
4+
5+
perfil_github = "" # Coloque o nome do seu perfil do github para acessar suas informações
6+
7+
URL = f"https://api.github.com/users/{perfil_github}" #? ENDPOINT com PATH PARAMETER como o perfil_github
8+
response = requests.get(URL) #? Response através da API URL
9+
print(f"HEADERS NÃO FORMATADO\n{response.headers}") #? Printando os Headers do Response que nos retornou
10+
11+
print() # Separar linha
12+
13+
#* Headers Formatado
14+
print("HEADERS FORMATADO")
15+
for key, value in response.headers.items():
16+
print(f"{key} : {value}")
17+
18+
print() # Separar linha
19+
20+
#* Json
21+
response_json = response.json()
22+
print(f"JSON NÃO FORMATADO\n{response_json}")
23+
24+
print() # Separar linha
25+
26+
#* Json Formatado
27+
print(f"JSON FORMATADO\n{json.dumps(response_json, indent=5, ensure_ascii=False)}")
28+
29+
#* Pegando informação específica do json
30+
print(f"URL: {response_json["url"]}")
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import json
2+
3+
#* Dicionario para string JSON (Serialização)
4+
dados = {'nome': 'Maria', 'cidade': 'São Paulo'}
5+
json_string = json.dumps(dados, indent=2) # indent para formatação
6+
print(f"String JSON: {json_string}")
7+
8+
#* String JSON para dicionario (Desserialização)
9+
json_data_string = '{"id": 1, "produto": "Notebook"}'
10+
dicionario_objeto = json.loads(json_data_string)
11+
print(f"Dicionário Python: {dicionario_objeto}")
12+
print(f"Produto: {dicionario_objeto['produto']}")
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Importando a biblioteca
2+
import requests
3+
4+
#* Método GET: obter dados
5+
URL_GET = "https://jsonplaceholder.typicode.com/todos/1" #? ENDPOINT
6+
response_get = requests.get(URL_GET)
7+
print(f"GET Status Code: {response_get.status_code}")
8+
print(f"GET Response: {response_get.json()}")
9+
10+
11+
URL_POST = "https://jsonplaceholder.typicode.com/posts" #? ENDPOINT
12+
#* Método POST: criar um conteúdo
13+
novo_post = {
14+
'userId': 1,
15+
'title': 'Meu novo post',
16+
'body': 'Este é o conteúdo do meu novo post.'
17+
}
18+
response_post = requests.post(URL_POST, json=novo_post)
19+
print(f"POST Status Code: {response_post.status_code}") #? Deve ser 201 (Created)
20+
print(f"POST Response: {response_post.json()}")
21+
22+
23+
URL_PUT = "https://jsonplaceholder.typicode.com/posts/1" #? ENDPOINT
24+
#* Método PUT: Atualizar um recurso existente
25+
post_atualizado = {
26+
'id': 1,
27+
'userId': 1,
28+
'title': 'Título atualizado',
29+
'body': 'Conteúdo atualizado.'
30+
}
31+
response_put = requests.put(URL_PUT, json=post_atualizado)
32+
print(f"PUT Status Code: {response_put.status_code}") #? Deve ser 200 (OK)
33+
print(f"PUT Response: {response_put.json()}")
34+
35+
36+
#* DELETE: Remover um recurso
37+
response_delete = requests.delete(URL_PUT)
38+
print(f"DELETE Status Code: {response_delete.status_code}") #? Deve ser 200 (OK)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Importando Bibliotecas
2+
import requests
3+
import json
4+
5+
URL = "https://jsonplaceholder.typicode.com/comments" #? ENDPOINT
6+
#* Definindo os parametros para a busca
7+
parametros = {
8+
'postId': 1,
9+
'_limit': 3 #? Limita a 3 resultados
10+
}
11+
12+
# Request sendo feita
13+
response = requests.get(URL, params=parametros) #
14+
print(f"URL da requisição: {response.url}") #? Mostra como a URL final foi montada
15+
print(f"Comentários para postId=1 (limitado a 2): {json.dumps(response.json(), indent=4)}")
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Importando Biblioteca
2+
import requests
3+
4+
URL = "https://jsonplaceholder.typicode.com/todos/1" #? ENDPOINT
5+
response = requests.get(URL)
6+
print(f"Status Code: {response.status_code}")
7+
8+
#* Verificando o código de status
9+
if response.status_code == 200:
10+
print("Requisição bem-sucedida!")
11+
print(response.json())
12+
elif response.status_code == 404:
13+
print("Recurso não encontrado.")
14+
else:
15+
print(f"Erro na requisição: Código {response.status_code}")

README.md

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,81 @@
1-
# py013-academy
2-
Repositório para projetos do PY013 Academy
1+
# Bem vindo a APIs com Python!
2+
3+
## Nesse mini curso, você irá aprender o básico de uma API:
4+
5+
- Definição (com analogia)
6+
- Para que utilizamos?
7+
- Analogias da vida real
8+
- Termos técnicos
9+
- Request
10+
- Métodos HTTP (Verbs)
11+
- Endpoint
12+
- Response
13+
- Status Code
14+
- Headers
15+
- Body
16+
- JSON e XML
17+
- Query Parameters
18+
19+
- Como consumir uma API com Python?
20+
- APIs públicas para testar
21+
- Construindo uma API simples (também com python)
22+
23+
24+
25+
26+
## Construindo uma API Python com FastAPI
27+
28+
Após entender como uma API funciona e suas vantagens, que tal montar uma você mesmo?
29+
Para isso iremos utilizar um framework, o FastAPI, muito utilizado para desenvolver uma de forma rápida (como o nome sugere).
30+
31+
Mas antes de tudo, vamos á nossa ideia: O serviço que desejamos oferecer.
32+
33+
Nesse projeto iremos desenvolver uma API de produtos para escritório, com as seguintes características:
34+
35+
Todo produto no nosso banco de dados terá:
36+
37+
- Descrição
38+
- Categoria
39+
- Quantidade de produtos disponíveis
40+
- Tipo de envio (Nacional ou Internacional)
41+
- Preço
42+
- Identificador único
43+
44+
45+
46+
## Utilização
47+
48+
Dentro da nossa API de produtos, nós podemos:
49+
50+
- Acessar vários produtos por meio de filtros
51+
- Acessar os dados de um único produto através do seu identificador
52+
- Adicionar produtos
53+
- Remover produtos
54+
- Editar produtos existentes
55+
56+
57+
58+
## Focando no essencial
59+
60+
Para quem ainda está no começo do seu aprendizado com python,
61+
há também disponível um [arquivo-esqueleto](./criar-api/main_template.py)
62+
que você pode acompanhar a explicação e tentar fazer da maneira que achar melhor.
63+
Lembrando que será explicado toda a parte do fastapi de sua utilização para que
64+
possa funcionar normalmente.
65+
66+
67+
68+
## Como testar a API?
69+
70+
1. Abra um terminal na pasta no projeto
71+
2. Navegue até a pasta das aulas de API com python com o comando `cd Aulas-API-Python`
72+
3. Crie um ambiente virtual python rodanod o comamndo `python3 -m venv .venv`
73+
4. Caso esteja usando windows, rode o próximo comando para ativar o ambiente `.\venv\Scripts\activate`
74+
5. Em seguida, instale as dependências necessárias pelo comando `pip install -r requirements.txt`
75+
6. Digite o comando `fastapi dev criar-api/main.py` e aperte enter.
76+
77+
Pronto! sua API estará ativa. Caso precise deastivá-la, aperte `Ctrl + c`.
78+
79+
Sua API por padrão estará disponível na url `localhost:8000`. utilize essa url para consumi-la
80+
como ensinado anteriormente.
81+

0 commit comments

Comments
 (0)