-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbook_controller.py
145 lines (124 loc) · 5.61 KB
/
book_controller.py
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
137
138
139
140
141
142
143
from http import HTTPStatus
from flask import Flask, jsonify, request # Flask library for build apis
from entity.book import Book
from log.log_app import LogApp
from service.book_service import BookService
log = LogApp(__file__)
class BookController:
__app: Flask
__baseUrl: str = "/api/book"
__bookService: BookService
def __init__(self):
self.__bookService = BookService()
##### *** these functions below @__app.route(...) it works auto
self.__app = Flask(__name__)
self.__httpGetBlock()
self.__httpPostBlock()
self.__httpPutBlock()
self.__httpDeleteBlock()
self.__app.run(host='localhost', port=8080) # start sever
def __httpGetBlock(self):
log.app.debug("http get methods work")
@self.__app.route(f"{self.__baseUrl}/server", methods=['GET'])
def testServer():
return jsonify({
'status': HTTPStatus.OK,
'data': 'hello world'
}), HTTPStatus.OK
@self.__app.route(f"{self.__baseUrl}/reads", methods=['GET'])
@self.__app.route(f"{self.__baseUrl}/", methods=['GET'])
def reads():
return jsonify({
'status': HTTPStatus.OK,
# 'data' : Student(id, 'Alex Owner').__dict__ #.__dir__ return json format
'data': self.__bookService.getBookList()
}), HTTPStatus.OK
@self.__app.route(f"{self.__baseUrl}/read", methods=['GET'])
def read():
id = int(request.args.get('id')) # get parameter on uri
return jsonify({
'status': HTTPStatus.OK,
'data': self.__bookService.getBookById(id)
}), HTTPStatus.OK
def __httpPostBlock(self):
log.app.debug("http post methods work")
@self.__app.route(f"{self.__baseUrl}/create", methods=['POST'])
def create():
# content type is application/json
name: str = request.json['name']
amount: int = int(request.json['amount'])
price: float = float(request.json['price'])
status: bool = bool(request.json['status'])
des: str = request.json['des']
book = Book(0, name, amount, price, status, des)
log.app.debug("book already creates %s",book)
return jsonify({
'status': HTTPStatus.CREATED,
'data': self.__bookService.saveBook(book)
}), HTTPStatus.CREATED
@self.__app.route(f"{self.__baseUrl}/create.form", methods=['POST'])
def createForm():
# content type is form-data
name: str = request.form.get('name')
amount: int = int( request.form.get('amount'))
price: float = float( request.form.get('price'))
status: bool = bool( request.form.get('status'))
des: str = request.form.get('des')
book = Book(0, name, amount, price, status, des)
log.app.debug("book already creates %s",book)
return jsonify({
'status': HTTPStatus.CREATED,
'data': self.__bookService.saveBook(book)
}), HTTPStatus.CREATED
def __httpPutBlock(self):
log.app.debug("http put methods work")
@self.__app.route(f"{self.__baseUrl}/update", methods=['PUT'])
def update():
# content type is application/json
id = int(request.args.get('id'))
name: str = request.json['name']
amount: int = int(request.json['amount'])
price: float = float(request.json['price'])
status: bool = bool(request.json['status'])
des: str = request.json['des']
book = Book(0, name, amount, price, status, des)
log.app.debug("book id %d already updates %s",id,book)
return jsonify({
'status': HTTPStatus.ACCEPTED,
'data': self.__bookService.editBookById(id,book)
}), HTTPStatus.ACCEPTED
@self.__app.route(f"{self.__baseUrl}/update.form", methods=['PUT'])
def updateForm():
# content type is form-data
id = int(request.args.get('id'))
name: str = request.form.get('name')
amount: int = int( request.form.get('amount'))
price: float = float( request.form.get('price'))
status: bool = bool( request.form.get('status'))
des: str = request.form.get('des')
book = Book(0, name, amount, price, status, des)
log.app.debug("book id %d already updates %s",id,book)
return jsonify({
'status': HTTPStatus.ACCEPTED,
'data': self.__bookService.editBookById(id,book)
}), HTTPStatus.ACCEPTED
def __httpDeleteBlock(self):
log.app.debug("http delete methods work")
@self.__app.route(f"{self.__baseUrl}/delete", methods=['DELETE'])
def delete():
# content type is application/json
id = int(request.args.get('id'))
log.app.debug("book id %d already deletes",id,)
return jsonify({
'status': HTTPStatus.ACCEPTED,
'data': self.__bookService.removeBookById(id)
}), HTTPStatus.ACCEPTED
@self.__app.route(f"{self.__baseUrl}/delete.form", methods=['DELETE'])
def deleteForm():
# content type is form-data
id = int(request.form.get('id'))
log.app.debug("book id %d already deletes",id,)
return jsonify({
'status': HTTPStatus.ACCEPTED,
'data': self.__bookService.removeBookById(id)
}), HTTPStatus.ACCEPTED