在googleappengine上用Python构建webhook转换器的最简单方法
我正在构建一个小工具(没有UI),它将接受来自多个服务的webhook,重新格式化内容,然后将标准化内容发送到另一个webhook 示例:Stripes webhook有很多原始数据,但我想用摘要ping另一个webhook。因此,我想获取stripe发送给我的原始数据,将其重新格式化为一个简单的字符串,然后发送给另一个webhook 我想象脚本会这样做:在googleappengine上用Python构建webhook转换器的最简单方法,python,google-app-engine,Python,Google App Engine,我正在构建一个小工具(没有UI),它将接受来自多个服务的webhook,重新格式化内容,然后将标准化内容发送到另一个webhook 示例:Stripes webhook有很多原始数据,但我想用摘要ping另一个webhook。因此,我想获取stripe发送给我的原始数据,将其重新格式化为一个简单的字符串,然后发送给另一个webhook 我想象脚本会这样做: # 1. receive webhook sent to URL with ?service=stripe param # 2. parse
# 1. receive webhook sent to URL with ?service=stripe param
# 2. parse URL to get service param
# 3. parse data received in payload
# 4. use some of the data received in new string
# 5. send string to new webhook
我很想在GAE上主持这个节目。我已经用Django构建了很多项目,但是因为这不需要一个看起来很重的UI或数据库。我想要任何帮助。我已经建立了GAE项目,现在:
import web #using web.py
import logging
urls = (
"/.*", "hooks",
)
app = web.application(urls, globals())
class hooks:
# 1. DONE receive webhook sent to URL with ?service=stripe param
def POST(self):
# 2. parse URL to get service param
# ...
# service_name = [parsed service name]
# 3. DONE parse data received in payload
data = web.data()
logging.info(data)
# 4. DONE use some of the data received in new string
# (I've got the reformatting scripts already written)
# data_to_send = reformat(data, service_name)
# 5. send data_to_send as payload to new webhook
# new_webhook_url = 'http://example.com/1823123/'
# CURL for new webhook is: curl -X POST -H 'Content-Type: application/json' 'http://example.com/1823123/' -d '{"text": data_to_send}'
return 'OK'
app = app.gaerun()
那么在GAE上,有没有一种更适合的方法(2)解析传入的URL和(5)发送webhook?我不熟悉web.py。许多GAE应用程序都基于webapp2 要使用webapp2解析URL,您需要创建。以下是我为处理PayPal IPN创建的一条简单路线:
(r'/ipn/(\S+)/(\w+)', website.ProcessIPN)
然后我有一个处理此路由的处理程序:
class ProcessIPN(webapp2.RequestHandler):
def post(self, user, secret):
payload = json.loads(self.request.body)
...
路由是一个正则表达式,它捕获URL的两个部分,这些部分作为处理程序的两个参数(user和secret)传递。假设您的负载是JSON,这样您就可以很容易地使用webapp2获得它,如上所述
要发送webhook,您需要使用
考虑到您的用例有多么简单,我建议不要使用web.py,而是使用webapp2。我会使用webapp2解析传入的URL以及有效负载(2和3)?@Brenden,更新的答案显示如何使用webapp2获得有效负载。