from bottle import route, run, template,get,post,put,delete,request,response import json import os def secure_response_headers(response): response.set_header('Content-Type', 'application/json') response.set_header('X-XSS-Protection', '1; mode=block') response.set_header('X-Frame-Options', 'deny') response.set_header('Content-Security-Policy', "default-src 'none'") response.set_header('Strict-Transport-Security', 'max-age=31536000') response.set_header('X-Content-Type-Options', 'nosniff') return response def debug_request(): print('--- QUERY ---') for k,v in request.query.items(): print( k+"="+v ) print('--- COKKIE ---') for k,v in request.cookies.items(): print( k+"="+v ) print('--- HEADER ---') for k,v in request.headers.items(): print( k+"="+v ) print('--- FORM ---') for k,v in request.forms.allitems(): print( k+"="+v ) @get('/gettest') def gettest(): debug_request() _a = request.query['a'] # same as request.query.get('a') _b = request.query['b'] # same as request.query.get('b') secure_response_headers(response) return json.dumps({'staus':'ok'}) @post('/posttest') def posttest(): debug_request() secure_response_headers(response) return json.dumps({'staus':'ok'}) @put('/puttest') def puttest(): debug_request() secure_response_headers(response) return json.dumps({'staus':'ok'}) @delete('/deletetest') def deletetest(): debug_request() secure_response_headers(response) return json.dumps({'staus':'ok'}) @post('/post_multipart_test') def post_multipart_test(): debug_request() # make image folder _dir = 'user/image/123/' os.makedirs(_dir, exist_ok=True) # save file. _file = request.files.get('image') upload_file = _dir + _file.filename _file.save(upload_file) print('file uploaded :' + str(os.path.isfile(upload_file))) secure_response_headers(response) return json.dumps({'staus':'ok', 'filename':_file.filename}) @route('/hello') def hello(): _msg = "World!" return template('Hello {{a}}!', a=_msg) if __name__ == '__main__': run(host='192.168.111.102', port=8888, debug=True, reloader=True)