无码人妻A片一区二区三区_18禁裸乳无遮挡啪啪无码免费_91精品亚?影视在线?看_人人妻人人爽人人澡AV_国产精品人妻一区二区三区四区_午夜免费影视

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 軟件研發(fā) > 如何使用Python收聽Webhooks

如何使用Python收聽Webhooks

2020-07-23 15:43:29 | 來源:中培企業(yè)IT培訓(xùn)網(wǎng)

Webhooks在運行應(yīng)用程序之間,發(fā)生的大部分功能被稱為“魔術(shù)”表演。它們有時被稱為反向API,回調(diào)甚至通知。那么如何使用Python收聽Webhooks?Python在許多服務(wù)中都可以見到,例如SendGrid,Stripe,Slack和GitHub,都使用事件將Webhooks發(fā)送為其API的一部分。這使您的應(yīng)用程序可以偵聽事件并在事件發(fā)生時執(zhí)行操作。

本指南假定您在計算機上安裝了Python v3。您可以在官方下載頁面上找到有關(guān)安裝python的詳細信息 。根據(jù)您的設(shè)置, python 您要使用的命令可能是 python3。

您可以通過從終端運行以下命令來確認安裝的版本:

python --version

或者,如果顯示的版本低于3:

python3 --version

  什么是網(wǎng)絡(luò)掛鉤

Webhooks之所以稱為反向API,是有原因的。API會將請求發(fā)送到您的應(yīng)用程序,而不是您的應(yīng)用程序向API發(fā)送請求。雖然這個概念聽起來可能不同,但是我們使用Webhook的方式與API使用請求的方式相同。

在大多數(shù)Web框架中,都有路由的概念。路由允許應(yīng)用程序在用戶訪問特定URL時以特定內(nèi)容或數(shù)據(jù)進行響應(yīng)。同樣的想法也適用于API。

當(dāng)您向GitHub發(fā)送有關(guān)特定組織的詳細信息的請求時,例如 Bearer,路線是 /orgs/:org 哪里 :org 是組織的名稱。

接收Webhook時應(yīng)用相同的概念。我們建立一條路由,告訴服務(wù)將數(shù)據(jù)發(fā)送到哪里,然后我們的應(yīng)用程序就坐下來等待,直到對該路由發(fā)出請求。Webhook實現(xiàn)中存在一些一致性。

他們通常是 POST 要求。

他們接收JSON數(shù)據(jù)。

他們需要迅速做出反應(yīng)。

某些API將要求您的應(yīng)用程序在一定時間內(nèi)做出響應(yīng),否則將重新發(fā)送該事件。例如, Slack API 希望在三秒鐘內(nèi)返回響應(yīng)。

  使用Flask接收Webhook

該 瓶框架 是一個輕量級的Python Web框架,把自己描述為“微”。這樣一來,您就可以使用所需的內(nèi)容,然后隨著項目的增長添加更多的結(jié)構(gòu)。

就我們的目的而言,這很好,因為我們只關(guān)心路由。確保已安裝Python,然后在終端中運行以下命令來安裝flask:

python -m pip install Flask

您可以在Flask文檔中找到完整的安裝和設(shè)置詳細信息 。

接下來,創(chuàng)建一個 .py 文件,例如 main.py 并添加以下內(nèi)容:

from flask import Flask, request, Response

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])

def respond():

print(request.json);

return Response(status=200)

此代碼將Flask類以及request和Response對象導(dǎo)入。然后使用名稱實例化它 __name__ 在將其分配給 app 變量。該命名方案是Flask文檔中的約定。

接下來,我們使用 @app.route 裝飾者傾聽 POST 針對 /webhook 路徑。當(dāng)對路由提出請求時,此裝飾器調(diào)用緊隨其后的函數(shù)。在這種情況下, respond 功能。

就本例而言,我們 print 將請求作為json發(fā)送,然后返回 Response 狀態(tài)代碼為200。此響應(yīng)告訴發(fā)送者我們已收到該掛鉤。您應(yīng)該能夠使用Flask的首選技術(shù)來運行服務(wù)器:

export FLASK_APP=main.py

python -m flask run

就是這樣!現(xiàn)在,我們有了一個應(yīng)用程序,該應(yīng)用程序使用python和flask監(jiān)聽webhook。部署后, POST 向端點發(fā)出的請求將觸發(fā) respond 功能。

例如:webhook. 這也是您將提供發(fā)送Webhook服務(wù)的URL。

  接收Django的Webhook

在Django中設(shè)置應(yīng)用程序要比Flask自動化得多,但這也帶來了更精細的文件結(jié)構(gòu)。作為更傳統(tǒng)的模型-視圖-控制器(MVC)框架,Django為您提供了該項目的主要部分。完整的安裝指南可在 官方的Django文檔頁面上找到,但也可以通過以下方式安裝 pip 使用以下命令:

python -m pip install Django

如果您是從頭開始建立專案,請使用 django-admin 實用程序來創(chuàng)建一個新項目。如果您已有要添加Webhooks的Django項目,請?zhí)料乱徊健?/p>

django-admin startproject example-project

這為新的Django項目奠定了基礎(chǔ)。導(dǎo)航到新創(chuàng)建的文件夾,您將看到類似于以下內(nèi)容的結(jié)構(gòu):

example-project/

manage.py

example-project/

__init__.py

settings.py

urls.py

asgi.py

wsgi.py

我們可以通過運行來確認一切正常 python manage.py runserver。

Django的慣例是在此外部“項目”中設(shè)置“應(yīng)用”。您可以避免這種情況,并通過運行來設(shè)置一個單應(yīng)用程序項目 django-admin startproject example-project .尾隨句點(。)代替。對于本教程,我們將鏡像首選的方式,如前所示。

為此,我們將設(shè)置一個名為webhooks的“應(yīng)用程序” 。

python manage.py startapp webhooks

這將創(chuàng)建一個名為webhooks的新目錄 。現(xiàn)在我們可以編寫一些代碼。

我們將專注于三個文件: webhooks/views.py, webhooks/urls.py (尚未創(chuàng)建),以及 example-site/urls.py。

開啟檔案 webhooks/views.py。在這里,我們將編寫處理路線的邏輯。

from django.http import HttpResponse

from django.views.decorators.http import require_POST

@require_POST

def example(request):

return HttpResponse('Hello, world. This is the webhook response.')

此代碼執(zhí)行以下操作:

它導(dǎo)入 HttpResponse 用于發(fā)送響應(yīng)的對象。

它導(dǎo)入一個特殊的裝飾器以限制請求方法。在Django中,路由默認情況下接受所有HTTP方法,并讓視圖管理它們響應(yīng)的方法。

調(diào)用裝飾器,將其后的功能限制為僅 POST 方法。

定義一個函數(shù),名為 example 將請求作為參數(shù)并返回響應(yīng)。

這個 example 函數(shù)的名稱將鏈接到我們的 urls.py 盡快歸檔。它不需要與特定路徑對齊。

接下來,建立 webhooks/urls.py 如果尚不存在。這是我們在項目的此子應(yīng)用程序內(nèi)組織路線的地方。

from django.urls import path

from . import views

urlpatterns = [

path('example/', views.example)

]

在這里,我們導(dǎo)入 path 從 django.urls。它定義了各個路線,并將它們與視圖關(guān)聯(lián)。接下來,我們導(dǎo)入所有視圖。

最后, urlpatterns 被傳遞路徑列表。Django將此列表識別為與應(yīng)用程序關(guān)聯(lián)的路由。

在這種情況下,我們定義了以 example/ 并與視圖關(guān)聯(lián) views.example,這是我們函數(shù)的名稱 views.py。

完成此操作后,我們的應(yīng)用程序可以運行,但是我們需要將其告知外部項目。打開 example-project/urls.py。它看起來應(yīng)該與先前的文件相似,但是已經(jīng)存在 admin 路線。像這樣添加新路徑:

urlpatterns = [

path('admin/', admin.site.urls),

path('webhooks/', include('webhooks.urls'))

]

如果您的服務(wù)器已停止,請使用 python manage.py runserver。

現(xiàn)在嘗試向發(fā)出POST請求 /example/(如果不同,請用您自己的主機和端口替換)。

這樣,我們就建立了一個Django項目,該項目監(jiān)聽一個Webhook /webhooks/example。部署后,將此路徑附加到完整URL上,并將完整URL提供給發(fā)送Webhook的服務(wù)。

  在本地測試Webhooks

要在本地進行Webhooks的測試而不進行部署,我們需要打開從開發(fā)機器到外界的連接。

一種選擇是使用 ngrok。通過此服務(wù),您可以提供對本地計算機上特定端口的外部訪問。這非常適合我們的需求。首先,請注冊并按照安裝和入門說明進行操作。

完成后,如果您使用的是MacOS,則應(yīng)該可以運行 ./ngrok http 3000 在將3000替換為正在運行的Python應(yīng)用程序的端口的終端中。例如,默認的Django站點通常在端口8000上運行。

一旦啟動并運行,ngrok將為您提供一個可用于測試Webhook的URL。在Bearer中,我們在通知設(shè)置中提供了“測試”按鈕。

配置完成后,您將開始在該URL接收webhook。開發(fā)和測試完成后,請不要忘記將其更改為最終部署的Webhook URL。

  您可以使用此信息做什么?

一旦配置了Webhook,則取決于您如何處理它收到的信息。您可以使用此信息對事件進行實時響應(yīng),使應(yīng)用程序的功能翻轉(zhuǎn),甚至可以將其用作將數(shù)據(jù)寫入數(shù)據(jù)庫的方式。您的Webhook可以具有無數(shù)種功能,具體取決于API提供程序發(fā)送的信息類型。

盡管我們在本文中構(gòu)建了一個基本的實現(xiàn),但是值得一提的是,許多服務(wù)都提供了驗證請求是否來自實際來源的方法。這可以通過限制訪問您的應(yīng)用程序的URL或通過匹配密鑰來完成。例如,GitHub允許您設(shè)置將隨每個Webhook發(fā)送的秘密。

以上就是關(guān)于如何使用Python收聽Webhooks的全部內(nèi)容介紹,想了解更多關(guān)于Python的信息,請繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: Python 軟件研發(fā)
主站蜘蛛池模板: 亚洲ΑV无码一区二区三区四区 | 天天干夜夜夜操 | 男人视频在线观看 | 国产福利精品一区二区三区 | 免费一级全黄少妇性色生活图片 | 久久黄色片子 | 亚洲精品无码久久久久苍井空国产一 | 十大免费最污的软件 | 欧美日韩视频网站 | 亚洲精品免费视频 | 国产精品爱久久久久久久 | 在线看片无码永久免费aⅴ 张柏芝三级在线观看 | 国产97在线观看 | 日本免费一区二区三区四区五区 | 欧美成人影院在线观看网站 | av无码中文字幕不卡一二三区 | 久久久噜噜噜久久久精品 | 麻豆人妻无码性色av专区 | 亚洲avav国产av综合av | 日韩综合AV一区二区三区在线 | 欧洲熟妇牲交 | 人成在线免费视频 | 亚洲乱码一二三四区 | 挺进邻居丰满少妇的身体 | 亚洲一区二区三区av激情 | 久久精品免费一区二区喷潮 | 国产片av| 午夜精品白在线观看 | 中文无码人妻影音先锋 | 女人高潮视频网站 | freesex性中国熟妇 | 一个人看的视频www在线观看 | 欧美不卡二区 | 亚洲国产精品天堂 | 国产88久久久国产精品免费二区 | 免费无码AV片在线观看中文 | 综合网亚洲成色最大综合在线 | 国产又黄又大又粗的视频 | 国产免费AV片在线无码免费看 | 久久99精品久久久久久hb无码 | 大帝a∨无码视频在线播放 欧美黄a |