Flask(4)- URL 組成部分詳解


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 還有很多其他屬性,后面會陸續講到 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM