Я получаю уведомления от удаленного 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')