URL
- Uniform Resource Locator 的簡寫,中文名叫統一資源定位符
- 用於表示服務端的各種資源,例如網頁
- 下面將講解 Flask 中如何提取組成 URL 的各個部分
URL 組成詳解
一個常見的 url
https://www.cnblogs.com/poloyy/
由以下幾部分組成
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/poloyy/的 path 是 poloyy/;
- key=value:查詢字符串,例如:https://www.baidu.com/s?wd=python,查詢字符串是 wd=python,查詢字符串包括兩部分:參數名和參數值,這個例子中,參數名是 wd,參數值是 python
在 Flask 中分析 URL 參數
- 服務端收到將客戶端發送的數據后,封裝形成一個請求對象,在 Flask 中,請求對象是一個模塊變量 flask.request
- request 對象包含了眾多的屬性
- 假設 URL 等於 http://localhost/query?userId=123,則與 URL 參數相關的屬性如下:
屬性 | 說明 |
---|---|
url | http://localhost/query?userId=123 |
base_url | http://localhost/query |
host | localhost |
host_url | http://localhost/ |
path | /query |
full_path | /query?userId=123 |
實際栗子
#!/usr/bin/python3 from flask import Flask from flask import request app = Flask(__name__) def echo(key, value): print('%-10s = %s' % (key, value)) @app.route('/query') def query(): 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) print('userId = %s' % request.args['userId']) return 'hello' if __name__ == '__main__': app.run(port = 80)
瀏覽器訪問
http://127.0.0.1:5000/query?userId=123
控制台輸出結果
url = http://127.0.0.1:5000/query?userId=123 base_url = http://127.0.0.1:5000/query host = 127.0.0.1:5000 host_url = http://127.0.0.1:5000/ path = /query full_path = /query?userId=123 ImmutableMultiDict([('userId', '123')]) userId = 123
總結
request 還有很多其他屬性,后面會陸續講到