无码人妻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ā)
主站蜘蛛池模板: 可以在线免费观看的av | 看全色黄大色黄大片大学生 | 欧美91看片特黄aaaa | 美乳视频一区二区 | 国产一级免费网站 | 亚洲欧美国产一区二区 | 人xxxx性xxxxx欧美| 亚洲传媒在线 | 欧美一级淫片免费视频黄 | 色婷婷777 | 超薄丝袜足J好爽在线观看 精品一二三四五区 | www.亚洲成人| 亚洲免费福利 | 亚洲一区国产一区 | 日本公与丰满熄理论在线播放 | 最新国内精品自在自线视频 | 欧洲激情视频 | 日韩毛片免费视频一级特黄 | 日产乱码一二三区别免费一 | 91精品国产综合久久香蕉 | 性色a∨精品高清在线观看 91n成人 | 欧美一乱一性一交一视频 | 国内精品视频一区二区三区 | 操操操操操网 | 久久亚洲免费 | 日韩精品一区二区三区免费视频 | 国产一区精品最新 | 亚洲人成网站在e线播放 | 日本高清aⅴ毛片免费 | 2019天天爱天天做 | 久久99精品国产麻豆婷婷小说 | 中文乱码免费一区二区三区 | 日本在线一区二区 | 国产精品久久久91 | 亚洲国产超高清a毛毛片 | 十八禁羞羞视频爽爽爽 | 91av综合| 久久久久国产精品熟女影院浪 | 国语自产一区第二页日本 | 无码专区国产精品视频 | 国产精品第页 |