Flask - Flask中的HTTP方法和URL組成部分

一、前言

參考:http://www.imooc.com/wiki/flasklesson/flaskhttp.html

上篇我們創建了第一個 Flask 程序,並且在瀏覽器中成功看到了 Flask 程序給我們返回的 Hello World。但是你有沒有注意到,我們看到的內容只是在後臺進行寫死的,也就是說無論你怎麼請求,看到的永遠是 Hello World,無法根據自己的需求讓 Flask 程序返回給你想要的內容?這該怎麼辦呢?不要急,我們有 HTTP 協議,HTTP 協議提供了多種方法訪問服務端資源

二、常用的HTTP方法

瀏覽器向 Web 服務器發出請求時,它向服務器傳遞了一個請求信息,HTTP 請求信息由 3 部分組成:

  • 請求行;
  • 請求頭;
  • 請求正文。

根據 HTTP 標準,常用的 HTTP 請求如下所示:

 

 三、Flask中的HTTP方法

1、GET方法

from flask import Flask

app = Flask(__name__)

# 不指定 methods,默認就是 GET
@app.route('/')
def hello_world():
    # 返回字符串
    return '<b>Hello World</b>'

@app.route('/get', methods=["GET"])
def get_():
    # 返回字符串
    return '這是get請求'


if __name__ == '__main__':
    app.run()

 默認的 app.route() 是僅支持 GET 請求的,如果想通過 POST、PUT、DELTE 等方法正常請求的話,需要添加 methods 參數

2、POST方法

from flask import Flask

app = Flask(__name__)

@app.route('/post', methods=["POST"])
def post_():
    # 返回字符串
    return {"message":"請求成功","code":"200"}

if __name__ == '__main__':
    app.run()

如果 return 的是字典,那麼請求得到的響應數據是 Json 格式哦

四、URL組成部分

1、URL組成詳解

一個常見的url:https://www.cnblogs.com/Chilam007/

由以下幾部分組成:scheme://host:port/path?key=value

  • scheme:代表的是訪問的協議,一般爲 http 或者 https。例如,https://www.baidu.com 的協議是 https;
  • host:主機名、域名,例如,https://www.baidu.com 的 host 爲 www.baidu.com;
  • port:端口號,http 協議默認使用 80 端口,https 協議默認使用 443 端口。通常情況下,使用默認值,不需要顯式的寫明端口號,例如,https://www.baidu.com 的端口是 443。某些情況下,可以顯式的寫明端口號,例如,http://localhost:5000 的端口號是 5000;
  • path:頁面路徑,例如:https://www.cnblogs.com/Chilam007/p/16991728.html的 path 是 Chilam007/p/16991728
  • key=value:查詢字符串,例如:https://www.baidu.com/s?wd=python,查詢字符串是 wd=python,查詢字符串包括兩部分:參數名和參數值,這個例子中,參數名是 wd,參數值是 python

2、在Flask中分析URL參數

  • 服務端收到將客戶端發送的數據後,封裝形成一個請求對象,在 Flask 中,請求對象是一個模塊變量 flask.request
  • request 對象包含了衆多的屬性
  • 假設 URL 等於 http://localhost/query?userId=123,則與 URL 參數相關的屬性如下:

 

 3、實際例子

from flask import Flask,request

app = Flask(__name__)

def echo(key, value):
    print('%-10s = %s' % (key, value))

# 定義路徑 /query 的處理函數 query()
@app.route('/query')
def query():
    '''打印 request 對象中和 URL 相關的屬性;URL 中的查詢參數保存在 request.args 中'''
    echo('url', request.url)
    echo('base_url', request.base_url)
    echo('host', request.host)
    echo('host_url', request.host_url)
    echo('path', request.path)
    echo('full_path', request.full_path)
    print()

    print(request.args)
    # 打印查詢參數 userId 的值
    print('userId = %s' % request.args['userId'])
    return 'hello'

if __name__ == '__main__':
    app.run()

 瀏覽器訪問:http://127.0.0.1:5000/query?userId=123

控制檯輸出結果:

4、小結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章