使用DRF的webhooks的回调URL

时间:2018-11-07 11:46:44

标签: django django-rest-framework

我将通过提供的回调URL从应用程序中的远程API接收通知。

如果我的回调网址是https://example.com/api/v1/sell/callback

远程API使用GET以此方式向我的应用发送通知

https://example.com/api/v1/sell/callback?invoice_id=BNSLE30AL&address=1PTPiwZ4&transaction_hash=94d37dc&value=1075&confirmations=1

这是远程API发送的请求。 问题是他们的所有请求都收到404,我希望我可以使用request.query_params来接收他们的响应中的数据,但是我显然不能,因为远程API无法到达此端点。

这是我用于回调的端点

@csrf_exempt
@list_route(methods=['GET'], permission_classes=[AllowAny])
def callback(self, request):
    print(request.query_params)
    print(request.data)
    return Response(status=status.HTTP_200_OK)

由于我得到的只是一个404错误,因此如何使我的端点可访问外部API。

其他信息: 我正在使用Django Viewset 当我在没有任何参数的情况下向https://example.com/api/callback发出请求时,便可以访问该端点。

更新: 我已经添加了由远程服务器发送的请求,现在我想我可能必须为此使用带有正则表达式的自定义网址...这个想法?

更新2:

views.py

class InvoiceModelViewSet(ModelViewSet):
    model = Invoice
    serializer_class = InvoiceModelSerializer

    @csrf_exempt
    @list_route(methods=['POST', 'GET'], permission_classes=[AllowAny])
    def callback(self, request):
        print(request.query_params)
        return Response(status=status.HTTP_200_OK)

urls.py

使用视图集路由器

router.register(r'sell', InvoiceModelViewSet , base_name='sell')

0 个答案:

没有答案