-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
87 lines (67 loc) · 2.36 KB
/
app.py
File metadata and controls
87 lines (67 loc) · 2.36 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
from flask import Flask,jsonify , request
app = Flask(__name__)
stores = [
{
"name": "My Store",
"items": [
{
"name": "Chair",
"price": 175.50
}
]
},
{
"name": "My Store Two",
"items": [
{
"name": "Chair",
"price": 75.0
}
]
}
]
#400 -BAD rEQUEST
#404 -PAGE NOT FOUND/tHE REQUESTED url WAS NOT FOUND
#201 - Created success status
@app.route('/',methods=['GET'])
def home_page():
return 'Hello this home page'
@app.route('/store',methods=['GET'])
def get_stores():
# return stores
return jsonify({'stores':stores})
@app.route('/store',methods=['POST'])
def create_store():
request_data = request.get_json()
new_store = {"name":request_data["name"],"items":[]}
stores.append(new_store)
return new_store , 201
@app.route('/store/<string:store_name>')
def method_name(store_name):
#this is alwys passing bcoz because Flask's routing system automatically converts the <string:store_name> parameter to a string,
# even if a number is provided in the URL. This is why your isinstance(store_name, str) check always passes.
# if not isinstance(store_name, str):
# return jsonify({'message': 'Store name must be a string'}), 400
# if not store_name.isalpha():
# return jsonify({'message': 'Store name must be a string and contain no numbers'}), 400
for store in stores:
if store['name'] == store_name:
return jsonify(store)
return jsonify({'message':'Store not found'})
@app.route('/store/<string:name>/item',methods=['POST'])
def create_item(name):
request_data = request.get_json()
for store in stores:
if store["name"] == name:
new_item = {"name":request_data["name"], "price":request_data["price"]}
store["items"].append(new_item)
return new_item , 201
return {"messgae":"Store not found"} , 404
@app.route('/store/<string:store_name>/item',methods=['GET'])
def get_item(store_name):
for store in stores:
if store["name"] == store_name:
return {"items":store["items"]}
return {"messgae":"Store not found"} , 404
if __name__=='__main__':
app.run(debug=True)