四虎国产精品永久地址998_chinesexxx少妇露脸_日本丁香久久综合国产精品_一区二区久久久久_四虎av影视_久久久久国产一区二区三区不卡

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > 軟件研發(fā) > 如何使用Python在Azure Functions 2.x中配置HTTP路由參數(shù)?

如何使用Python在Azure Functions 2.x中配置HTTP路由參數(shù)?

2020-08-24 18:08:09 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

有關(guān)三種流行的HTTP路由模式的高級(jí)概述,在文中,當(dāng)Azure Functions上下文中引用HTTP路由時(shí),是指基于路徑的路由。Azure Functions中的HTTP路由負(fù)責(zé)將請(qǐng)求URI映射到終結(jié)點(diǎn),并將HTTP請(qǐng)求路由到那些終結(jié)點(diǎn)。此外,Azure Functions可以從請(qǐng)求中包含的URI中提取值,并將這些值用于請(qǐng)求處理。后者是將多個(gè)參數(shù)傳遞給HTTP觸發(fā)器的有用方法。

  路由前綴

顧名思義,您可以在Azure Functions中為HTTP觸發(fā)器自定義或刪除默認(rèn)的“ api”路由前綴。要對(duì)其進(jìn)行更改,請(qǐng)修改host.json文件并添加以下配置設(shè)置:

{

"extensions": {

"http": {

"routePrefix": "foo"

}

}

}

在上面的示例中,我們將路由前綴設(shè)置為“ foo”。請(qǐng)注意:此設(shè)置是“全局”設(shè)置,因?yàn)槿绻诠δ軕?yīng)用程序中托管多個(gè)功能,則此設(shè)置將適用于所有功能。考慮到該設(shè)置的全局性質(zhì),在修改默認(rèn)設(shè)置方面我沒(méi)有發(fā)現(xiàn)太多價(jià)值。

  路線參數(shù)

如上所述,HTTP路由可以在Azure功能中用于兩個(gè)目的:將請(qǐng)求URI映射到終結(jié)點(diǎn)或請(qǐng)求處理。路由在function.json文件中定義,并在啟動(dòng)功能應(yīng)用程序時(shí)進(jìn)行配置。根據(jù)文檔,路由參數(shù)名稱必須為非空并且不能包含以下字符:{,},/。

  將請(qǐng)求URI映射到端點(diǎn)

到目前為止,這種模式最容易實(shí)現(xiàn)。讓我們來(lái)看一個(gè)示例,在該示例中,您希望在同一函數(shù)應(yīng)用程序中托管兩個(gè)版本的HTTP觸發(fā)函數(shù)。

在此示例中,我們有一個(gè)名為“ FirstName”的HTTP觸發(fā)函數(shù)。要將版本添加到路由,只需修改function.json文件并添加以下配置設(shè)置:

"route": "v1/FirstName",

現(xiàn)在,您可以創(chuàng)建一個(gè)類似的名為“ FirstName2”的HTTP觸發(fā)函數(shù),修改function.json文件并添加以下配置設(shè)置:

"route": "v2/FirstName",

您可以使用此功能來(lái)確保不破壞與您發(fā)布的功能的兼容性或?qū)⒘髁柯酚傻浇o定的端點(diǎn)。

使用HTTP路由參數(shù)進(jìn)行請(qǐng)求處理

讓我們來(lái)看一個(gè)使用route參數(shù)來(lái)自定義請(qǐng)求處理的示例。考慮默認(rèn)的HTTP觸發(fā)器模板,該模板將傳遞給“ name”參數(shù)的數(shù)據(jù)作為輸入,然后輸出傳遞給函數(shù)的數(shù)據(jù)。假設(shè)您要擴(kuò)展此功能以同時(shí)使用名字和姓氏,則可以將以下內(nèi)容添加到function.json文件中:

"route": "FirstNameLastName/{firstname}/{lastname}"

然后,您將修改功能代碼以反映以下內(nèi)容:

def main(req: func.HttpRequest) -> func.HttpResponse:

logging.info('Python HTTP trigger function processed a request.')

firstname = req.route_params.get('firstname')

lastname = req.route_params.get('lastname')

return func.HttpResponse(f"Hello {firstname} {lastname}! ")

請(qǐng)注意,您使用“ route_params”屬性而不是“ params”屬性。Python的HTTPRequest類的完整文檔在這里。

在本地運(yùn)行函數(shù)時(shí),您會(huì)注意到URL已從默認(rèn)值修改:

FirstNameLastName: [GET]

  路線約束

在route參數(shù)中添加約束可以使您限制如何匹配function.json中的路由。通用語(yǔ)法為“ {parameter:constraint}”。例如,如果我們想限制我們的FirstNameLastName 該函數(shù)僅接受我們先前定義的兩條路由的字母字符,我們將在function.json中對(duì)其進(jìn)行配置,如下所示:

"route": "FirstNameLastName/{firstname:alpha}/{lastname:alpha}",

考慮到Azure Functions的按交易付費(fèi)性質(zhì),這是一種確保您的功能應(yīng)用程序僅處理有效交易的絕佳方法。

請(qǐng)注意:路由約束的處理不是由功能應(yīng)用程序執(zhí)行,而是由Azure功能主機(jī)執(zhí)行。如果您提供的URI錯(cuò)誤,Azure函數(shù)主機(jī)將返回404。我將在以后的博客文章中介紹有關(guān)調(diào)試路由參數(shù)的內(nèi)容。

  強(qiáng)制與可選路由參數(shù)

您可以將HTTP路由參數(shù)標(biāo)記為可選,從而在代碼中提供一些靈活性。'?' 字符將參數(shù)標(biāo)記為可選參數(shù),并且只能出現(xiàn)在參數(shù)末尾。例如,如果我們想在上一個(gè)示例中將姓氏路由參數(shù)標(biāo)記為可選,則可以在function.json中對(duì)其進(jìn)行配置,如下所示:

"route": "FirstNameLastName/{firstname:alpha}/{lastname:alpha?}",

請(qǐng)注意,如果您沒(méi)有將lastname傳遞給上述URI,則功能代碼中l(wèi)astname變量的值將為None。

以上就是關(guān)于如何使用Python在Azure Functions 2.x中配置HTTP路由參數(shù)的全部?jī)?nèi)容,想了解更多關(guān)于Python的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: Python 軟件研發(fā)
主站蜘蛛池模板: 永丰县| 克拉玛依市| 漳州市| 兴义市| 沭阳县| 筠连县| 郸城县| 石阡县| 甘孜| 龙岩市| 京山县| 阿拉尔市| 蒲城县| 永川市| 桦甸市| 子长县| 浑源县| 义马市| 高尔夫| 平陆县| 宁安市| 梅州市| 瑞丽市| 朝阳市| 苍南县| 中方县| 监利县| 临澧县| 南昌县| 枣强县| 晋宁县| 淅川县| 湛江市| 潞城市| 靖江市| 伊金霍洛旗| 高州市| 石林| 云南省| 凌海市| 汶川县|