HOME | 預設分類 | python web api

python web api

2019/03/11/10:48 , Post in 預設分類 , 評論(0) , 引用(0) , 閱讀(2505) , Via 本站原創
首先安裝flask套件

pip install flask

用flask模擬一個5000 PORT的web server


from flask import abort
from flask import Flask, jsonify, request
app = Flask(__name__)

@app.route('/', methods=['GET'])
def hello():
    return 'hello world!'
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000 ,debug=True)  #host=0.0.0.0就是開放所有人連線,127.0.0.1就是只接受本機連線


接下來用瀏覽器去連http://ip:5000,就會看到hello world!

一個頁面大概像下面這樣,method有POST、GET、PUT、DELETE

我比較常用的就是POST跟GET為主

@app.route(路徑,methods=['GET','POST'])  #路徑,允許的方法
def function():
    要做的動作
    return '要回傳的值'


那POST要怎麼接收值呢,其實就是用request.form

假設我們要接收一個datetime的參數

@app.route('/post',methods['POST'])
def function():
    datetime = request.form['datetime']
    return '要回傳的值'


比較麻煩的是如果使用者丟上來的參數沒有datetime,程式就會出錯

所以如果這是必要欄位建議還是用try去接收


@app.route('/post',methods['POST'])
def function():
    try:
        datetime = request.form['datetime']
    except:
        return 'error'
    return '要回傳的值'


如果是GET


@app.route('/test/',methods=['GET'])
def get_task():
    return request.args.get("task_id")   #直接取得參數


用瀏覽器連http://ip:5000/test/?task_id=123,就會看到123

如果是希望在連線沒有這個URL的時候不要跳出DEBUG的錯誤訊息,而是404之類的話

就在前面加上


@app.errorhandler(404)
def not_found(error):
    return '404'


要取得USER到底是用post、get、put、delete的話

request.method(注意取得的值是大寫的GET、POST...)

取得使用者的IP  request.remote_addr

另外如果要設定timeout之類的話,很像單純只靠flask內建的web是做不到的

要搭配其他的module或是將執行的動作寫到另一個程式內

用os.popen去呼叫,並且在該程式使用multithread去計算是否有逾時

如果逾時則回覆504之類的...

發表評論

暱稱

網址

電郵

開啟HTML 開啟UBB 開啟表情 隱藏 記住我 [登入] [註冊]