-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
136 lines (117 loc) · 4.4 KB
/
app.py
File metadata and controls
136 lines (117 loc) · 4.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Aula do Canal Dev Aprender | Jhonatan de Souza: https://youtu.be/FBLAV1SbJFk
# API é um lugar para disponibilizar recursos e/ou funcionalidades.
# 1. Objetivo: criar API que disponibiliza a consulta, criação, edição e exclusão de livros.
# 2. URL base: local para os qual estaremos fazendo nossas requisições e, neste treinamento, será localhost
# 3. Endpoints: endereços que deverão ser consultado e verbos (funcionalidades) que serão disponibilizados
# - localhost/livros (GET) # consultar de forma geral
# - localhost/livros (POST) # criar novos livros
# - localhost/livros/id (GET) # consultar livro específico
# - localhost/livros/id (PUT) # modificar um livro específico
# - localhost/livros/id (DELET) # excluir um livro específico
# 4. Quais recursos: lista e dados de livros
from flask import Flask, jsonify, request
app = Flask(__name__)
livros = [
{
'id': 1,
'titulo': 'Dança Com Lobos',
'autor': 'Michael Blake'
},
{
'id': 2,
'titulo': 'O Universo numa Casca de Noz',
'autor': 'Stephen Hawking'
},
{
'id': 3,
'titulo': 'A Arte Cavalheiresca do Arqueiro Zen',
'autor': 'Eugen Herrigel'
},
{
'id': 4,
'titulo': 'Tao Te Ching',
'autor': 'Lao Tse'
},
{
'id': 5,
'titulo': 'A Profecia Celestina',
'autor': 'James Redfield'
},
{
'id': 6,
'titulo': 'O Senhor do Anéis - A Sociedade do Anel',
'autor': 'J. R. R. Tolkien'
},
]
# Consultar todos os livros
@app.route('/livros', methods=['GET'])
def obter_livros():
return jsonify(livros)
# Consultar por ID na URL
@app.route('/livros/<int:id>', methods=['GET']) # type: ignore
def obter_livro_por_id(id):
for livro in livros:
if livro.get('id') == id:
return jsonify(livro)
# Consultar livro por ID recebido no body JSON
@app.route('/livros/consultar_livro_por_id_json', methods=['GET']) # type: ignore
def consultar_livro_por_id_json():
dados = request.get_json()
id = dados["id"]
for livro in livros:
if livro.get('id') == id:
return jsonify(livro)
#else:
# return print("Desculpe, não temos nenhum livro com este ID!/n Favor, consulte novamente informando um ID válido./n Obrigado")
# Editar livro por ID na URL
@app.route('/livros/<int:id>', methods=['PUT']) # type: ignore
def editar_livro_por_id(id):
livro_alterado = request.get_json()
for indice, livro in enumerate(livros):
if livro.get('id') == id:
livros[indice].update(livro_alterado)
return jsonify(livros[indice])
# Editar livro por ID recebido no body JSON
@app.route('/livros/editar_livro_por_id_json', methods=['PUT']) # type: ignore
def editar_livro_por_id_json():
livro_alterado = request.get_json()
id = livro_alterado["id"]
for indice, livro in enumerate(livros):
if livro.get('id') == id:
livros[indice].update(livro_alterado)
return jsonify(livros[indice])
# #Criar livro
@app.route('/livros', methods=['POST'])
def incluir_novo_livro():
novo_livro = request.get_json()
livros.append(novo_livro)
return jsonify(livros)
#Criar livro
# @app.route('/livros', methods=['POST']) # type: ignore
# def incluir_novo_livro():
# novo_livro = request.get_json()
# id = novo_livro["id"]
# for livro in livros:
# if livro.get('id') == id:
# print("Desculpe, mas este ID já está sendo usado por outro livro!/n Tente novamente com outro ID.")
# return jsonify("'message': 'Desculpe, mas este ID já está sendo usado por outro livro!/n Tente novamente com outro ID.'")
# else:
# livros.append(novo_livro)
# return jsonify(livros)
#Excluir livro por ID na URL
@app.route('/livros/<int:id>', methods=['DELETE'])
def excluir_livro(id):
for indice, livro in enumerate(livros):
if livro.get('id') == id:
del livros[indice]
return jsonify(livros)
#Excluir livro por ID recebido no body JSON
@app.route('/livros/excluir_livro_por_id_json', methods=['DELETE'])
def excluir_livro_por_id_json():
livro_excluido = request.get_json()
id = livro_excluido["id"]
for indice, livro in enumerate(livros):
if livro.get('id') == id:
del livros[indice]
return jsonify(livros)
app.run(port=3000, host='localhost', debug=True)