第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

URL 組成部分詳解

URL 是 Uniform Resource Locator 的簡寫,中文名叫統(tǒng)一資源定位符,用于表示服務端的各種資源,例如網(wǎng)頁。本小節(jié)講解組成 URL 的各個部分,并給出在 Flask 中如何提取組成 URL 的各個部分。

Tips:本節(jié)課所有代碼已經(jīng)上傳到了 Github,可以點擊這里進行下載。

1. URL 組成詳解

先來看一個我們經(jīng)常見到的 URL 形式:

http://idcbgp.cn/wiki/html5

上面這個 URL 由以下幾部分組成:

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

2. 在 Flask 中分析 URL 參數(shù)

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

屬性 說明
url http://localhost/query?userId=123
base_url http://localhost/query
host localhost
host_url http://localhost/
path /query
full_path /query?userId=123

下面編寫一個 Flask 程序 request.py,打印 request 中和 URL 相關的屬性:

#!/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)

在第 10 行,定義路徑 /query 的處理函數(shù) query();在第 11 行到第 16 行,打印 request 對象中和 URL 相關的屬性;URL 中的查詢參數(shù)保存在 request.args 中,在第 20 行,打印查詢參數(shù) userId 的值。

在瀏覽器中輸入 http://localhost/query?userId=123,F(xiàn)lask 程序在終端輸出如下:

url        = http://localhost/query?userId=123
base_url   = http://localhost/query
host       = localhost
host_url   = http://localhost/
path       = /query
full_path  = /query?userId=123

ImmutableMultiDict([('userId', '123')])
userId = 123

3. 小結

本小節(jié)通過一個具體的例子,說明組成 URL 的各個部分,以及在 Flask 程序中使用 request 對象分析 URL 參數(shù)。使用思維導圖總結如下:

圖片描述