Code for Flask backend done at the workshop held on Feb 5, 2017.
Covers basic requests, querying from file and database.
- app
__init__.py- data
univ.dbpeople.json
api.py
app.jsonProcfilerequirements.txtrun.pyruntime.txt
#!usr/bin/pythonfromappimportappapp.run(debug=True)fromflaskimportFlask# import Flaskapp=Flask(__name__) # Our app is an instance of Flaskfromappimportapi# Import API here, more files can be imported hereImports
fromappimportappfromflaskimportjsonify, requestimportjsonimporttimeimportsqlite3
Data fromatter
# Returns standard JSON formatted object with data, message and response code.defdataFormatter(code, message, data): resp=jsonify({ 'code': code, 'message': message, 'data': data }) resp.status_code=codereturnresp
Routes without database
Example route
# Returns the square of a passed number# Example, @app.route('/number/<num>', methods=['GET'])
def square_method(num): try: sq = int(num) * int(num) ret = "Square of " + num + " is " + str(sq) + "." return dataFormatter(200, "Success.", ret) except: ret = "Error: Pass a number." return dataFormatter(400, "Bad request.", ret) ```
- For particulars
```python
@app.route('/<name>', methods=['GET', 'PUT', 'DELETE'])
def personParticular(name):
# http://localhost:5000/The%20Doctor
# cause I'm too lazy to edit the json for numeric keys :P
# put
if request.method == 'PUT':
ptodelete = {}
for person in data:
if person['name'] == name:
ptodelete = person
if ptodelete in data:
data.remove(ptodelete)
ptoins = json.loads(request.form.get('data', ''))
data.append(ptoins)
saveFile()
return dataFormatter(200, "Put successful", ptoins)
# delete
if request.method == 'DELETE':
ptodelete = {}
for person in data:
if person['name'] == name:
ptodelete = person
if ptodelete in data:
data.remove(ptodelete)
saveFile()
return dataFormatter(200, "delete successful", data)
return dataFormatter(404, "Not found", [])
# get
if request.method == 'GET':
psearch = {}
for person in data:
if person['name'] == name:
psearch = person
if psearch in data:
return dataFormatter(200, "Person found", psearch)
return dataFormatter(404, "Not found", [])
```