簡(jiǎn)介
Flask 是一款流行的 Python Web 框架,它簡(jiǎn)單輕量而靈活,適用于構(gòu)建各種規(guī)模的 Web 應(yīng)用程序。在 Flask 中,URL(Uniform Resource Locator)是指定 Web 應(yīng)用程序中資源的唯一標(biāo)識(shí)符。URL 組成部分是構(gòu)成一個(gè)完整 URL 的不同部分,包括協(xié)議、主機(jī)名、端口號(hào)、路徑和查詢參數(shù)等。在本文中,我們將深入探討 Flask URL 的組成部分及其作用。
URL 組成詳解
下面是我們常見(jiàn)的一個(gè)URL
https://blog.csdn.net/Tester_muller
由以下幾部分組成
scheme://host:port/path?key=value
- Scheme(協(xié)議):URL 的第一部分是協(xié)議,它指定了客戶端要使用的通信協(xié)議。在 Web 應(yīng)用中,常見(jiàn)的協(xié)議是 HTTP 和 HTTPS。HTTP(HyperText Transfer Protocol)是一種用于傳輸超文本的協(xié)議,而 HTTPS(HTTP Secure)是通過(guò) SSL/TLS 加密保護(hù)的安全 HTTP 協(xié)議。
注:在 Flask 中,默認(rèn)使用的是 HTTP 協(xié)議,可以通過(guò)配置來(lái)啟用 HTTPS,確保數(shù)據(jù)在傳輸過(guò)程中的安全性。在 URL 中,協(xié)議部分通常以 "http://" 或 "https://" 開(kāi)頭。
- Host(主機(jī)):URL 的主機(jī)名部分指定了 Web 服務(wù)器的域名或 IP 地址。它告訴客戶端應(yīng)該連接到哪個(gè)服務(wù)器以獲取所需的資源。例如,URL "example.com" 中的 "example.com" 就是主機(jī)名。
在 Flask 中,主機(jī)名默認(rèn)為 "localhost",表示 Web 應(yīng)用程序運(yùn)行在本地主機(jī)上。當(dāng)我們?cè)陂_(kāi)發(fā)環(huán)境中運(yùn)行 Flask 應(yīng)用時(shí),默認(rèn)監(jiān)聽(tīng)在本地主機(jī)上。但在部署到生產(chǎn)環(huán)境時(shí),我們通常會(huì)使用真實(shí)的域名或 IP 地址作為主機(jī)名。
-
Port(端口):端口號(hào)是 Web 服務(wù)器上監(jiān)聽(tīng)客戶端請(qǐng)求的特定端口。它允許多個(gè)網(wǎng)絡(luò)服務(wù)在同一 IP 地址上運(yùn)行。在 Flask 中,默認(rèn)情況下使用的端口號(hào)是 5000。
-
Path(路徑):路徑部分指定了 Web 服務(wù)器上資源的具體位置。在 Flask 中,路徑對(duì)應(yīng)于路由(Routes),它告訴應(yīng)用程序如何處理來(lái)自客戶端的請(qǐng)求。
-
key=value:查詢字符串,例如:
https://www.baidu.com/s?wd=selenium
,查詢字符串是wd=selenium
,查詢字符串包括兩部分:參數(shù)名和參數(shù)值,這個(gè)例子中,參數(shù)名是wd
,參數(shù)值是selenium
示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
@app.route('/about')
def about():
return 'This is the about page.'
URL "example.com/" 會(huì)觸發(fā) hello
函數(shù),而 URL "example.com/about" 則會(huì)觸發(fā) about
函數(shù)。
路徑部分可以包含多個(gè)層級(jí),例如 "/user/profile" 或 "/blog/post/123"。在 Flask 中,我們可以使用裝飾器 @app.route() 來(lái)指定不同路徑對(duì)應(yīng)的處理函數(shù)。
Flask 中分析 URL 參數(shù)
- 服務(wù)端收到將客戶端發(fā)送的數(shù)據(jù)后,封裝形成一個(gè)請(qǐng)求對(duì)象,在 Flask 中,請(qǐng)求對(duì)象是一個(gè)模塊變量 flask.request
- request 對(duì)象包含了眾多的屬性
- 假設(shè) URL 等于 http://localhost/search?userId=001,則與 URL 參數(shù)相關(guān)的屬性如下:
屬性 | 說(shuō)明 |
---|---|
url | http://localhost/search?userId=001 |
base_url | http://localhost/search |
host | localhost |
host_url | http://localhost/ |
path | /search |
full_path | /search?userId=001 |
查詢參數(shù)
查詢參數(shù)允許客戶端向服務(wù)器傳遞額外的數(shù)據(jù)。它們通常以鍵值對(duì)的形式出現(xiàn),中間使用 "&" 進(jìn)行分隔。在 Flask 中,可以通過(guò) request.args
屬性來(lái)獲取查詢參數(shù)。
例如,URL "example.com/search?q=fl…" 中的查詢參數(shù)是 "q=flask&limit=10",其中 "q" 和 "limit" 是參數(shù)名,"flask" 和 "10" 是對(duì)應(yīng)的值。在 Flask 中,可以通過(guò)以下方式獲取查詢參數(shù):
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
query = request.args.get('q')
limit = request.args.get('limit')
# 處理查詢邏輯
return f'Searching for "{query}" with limit {limit}.'
示例
from flask import Flask,request
app = Flask(__name__)
def echo(key, value):
print('%-10s = %s' % (key, value))
@app.route('/search')
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)
運(yùn)行腳本,瀏覽器訪問(wèn)下面網(wǎng)址:
http://127.0.0.1:80/search?userId=001
控制臺(tái)輸出結(jié)果如下:
127.0.0.1 - - [24/Jul/2023 14:35:39] "GET /search?userId=001 HTTP/1.1" 200 -
url = http://localhost/search?userId=001
base_url = http://localhost/search
host = localhost
host_url = http://localhost/
path = /search
full_path = /search?userId=001
ImmutableMultiDict([('userId', '001')])
userId = 001
總結(jié)
Flask URL 的組成部分是構(gòu)成一個(gè)完整 URL 的關(guān)鍵要素,它們包括協(xié)議、主機(jī)名、端口號(hào)、路徑和查詢參數(shù)。在開(kāi)發(fā) Flask 應(yīng)用時(shí),了解 URL 的構(gòu)成部分是至關(guān)重要的,因?yàn)樗鼈冎苯佑绊懼蛻舳巳绾闻c服務(wù)器交互,以及服務(wù)器如何響應(yīng)這些請(qǐng)求。通過(guò)合理設(shè)計(jì) URL 結(jié)構(gòu),我們可以使 Web 應(yīng)用更加易讀、易用和易于維護(hù)。
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,禮尚往來(lái)總是要有的,雖然不是什么很值錢(qián)的東西,如果你用得到的話可以直接拿走:
這些資料,對(duì)于【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴上萬(wàn)個(gè)測(cè)試工程師們走過(guò)最艱難的路程,希望也能幫助到你!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-792794.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-792794.html
到了這里,關(guān)于軟件測(cè)試|測(cè)試平臺(tái)開(kāi)發(fā)-Flask 入門(mén):URL組成部分詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!