URL обратного вызова для веб-хука с DRF - PullRequest
0 голосов
/ 07 ноября 2018

Я получаю уведомления от удаленного API в моем приложении через URL обратного вызова, который я предоставил.

Если мой URL обратного вызова 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)

Как сделать мою конечную точку доступной для внешнего API, потому что все, что я получаю, это ошибка 404.

Дополнительная информация: Я использую django viewsets когда я делаю запрос к https://example.com/api/callback без каких-либо параметров, я могу достичь этой конечной точки.

UPDATE: Я добавил запрос, отправленный удаленным сервером, и теперь думаю, что мне может понадобиться использовать собственный URL с регулярным выражением для этого ... мысли?

ОБНОВЛЕНИЕ 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

с использованием маршрутизатора viewsets

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

...