我正在做一个从网站上捕捉webhooks的api,网站要求你在调用webhook时使用的同一个url中激活你的webhook。 我会有很多webhook,因此我会有很多重复的逻辑来激活webhook。
如何使用Django Rest Framework的APIView来完成?
class MyWebhookView(APIView):
def post(self, request):
data = request.data
# repeated logic
if data.get('type') == constants.WEBHOOK_VERIFY:
hook = Hook(ID, TOKEN)
code = hook.validate(data.get('hook_id'), data.get('code'))
return Response({'code': code})
# custom logic
答案 0 :(得分:3)
您可以使用包含验证码的函数创建一个泛型类,如下所示
class GenericWebhookView(APIView):
def verify(self, data):
if data.get('type') == constants.WEBHOOK_VERIFY:
hook = Hook(ID, TOKEN)
code = hook.validate(data.get('hook_id'), data.get('code'))
return code
return None
然后,当您创建一个新视图时,您可以将其子类化并使用像这样的函数
class SomeOtherWebhookView(GenericWebhookView):
def post(self, request):
code = self.verify(request.data)
if code:
return Response({'code': code})
# custom code
这里仍然需要几行代码,但是这样你就可以一次更改每个子类视图的验证功能,当然也可以将任何其他重复的代码添加到通用视图中