Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在googleappengine上用Python构建webhook转换器的最简单方法_Python_Google App Engine - Fatal编程技术网

在googleappengine上用Python构建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

我正在构建一个小工具(没有UI),它将接受来自多个服务的webhook,重新格式化内容,然后将标准化内容发送到另一个webhook

示例:Stripes webhook有很多原始数据,但我想用摘要ping另一个webhook。因此,我想获取stripe发送给我的原始数据,将其重新格式化为一个简单的字符串,然后发送给另一个webhook

我想象脚本会这样做:

# 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获得有效负载。