參考:
使用python實現接口的方法
代碼Demo
1 import flask 2 from flask import request 3 from flask import jsonify 4 import tools 5 import OP_db 6 import settings 7 ''' 8 flask: web框架,可以通過flask提供的裝飾器@server.route()將普通函數轉換為服務 9 登錄接口,需要傳url、username、passwd 10 ''' 11 #創建一個服務,把當前這個python文件當做一個服務 12 server = flask.Flask(__name__) 13 #server.config['JSON_AS_ASCII'] = False 14 15 # @server.route()可以將普通函數轉變為服務 登錄接口的路徑、請求方式 16 @server.route('/login', methods=['get']) 17 def login(): 18 # 獲取通過url請求傳參的數據 19 username = request.values.get('name') 20 # 獲取url請求傳的密碼,明文 21 pwd = request.values.get('pwd') 22 # 判斷用戶名、密碼都不為空,如果不傳用戶名、密碼則username和pwd為None 23 if username and pwd: 24 # 獲取加密后的密碼 25 password = tools.md5_pwd(pwd) 26 #執行sql,如果查詢的username和password不為空,說明數據庫存在admin的賬號 27 sql = 'select name,password from test where name= "%s" and password= "%s";' %(username, password) 28 # 從數據查詢結果后,res返回是元組 29 res = OP_db.getconn( 30 host=settings.mysql_info['host'], 31 user=settings.mysql_info['user'], 32 passwd=settings.mysql_info['pwd'], 33 db=settings.mysql_info['db'], 34 port=settings.mysql_info['port'], 35 sql=sql 36 ) 37 if res: #res的結果不為空,說明找到了username=admin的用戶,且password為加密前的123456 38 resu = {'code': 200, 'message': '登錄成功'} 39 return jsonify(resu) #將字典轉換為json串, json是字符串 40 else: 41 resu = {'code': -1, 'message': '賬號/密碼錯誤'} 42 return jsonify(resu) 43 else: 44 res = {'code': 999, 'message': '必填參數未填寫'} 45 return jsonify(res) 46 47 if __name__ == '__main__': 48 server.run(debug=True, port=8888, host=0.0.0.0) #指定端口、host,0.0.0.0代表不管幾個網卡,任何ip都可以訪問
WARNING: This is a development server. Do not use it in a production deployment. falsk WSGI
記錄一下這個問題,
Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
其實就是flask未使用 WSGI 啟動,所以使用wsgi啟動就行了,我找到兩種方式,但不知道怎么比較好壞,但以我的理解,底層都是wsgi,只是封裝庫不同而已。。。
from gevent import pywsgi if __name__ == '__main__': server = pywsgi.WSGIServer(('0.0.0.0', 5000), app) server.serve_forever()