URL обратного вызова для API Response Django - PullRequest
0 голосов
/ 11 июня 2018

Я создаю редактор кода с использованием Hackerearth API . Я создал код для отправки асинхронного запроса API, поскольку это ускорит производительность и сократит время ожидания.

Я упоминалих документов об отправке асинхронного запроса. Мне нужно указать URL-адрес обратного вызова. В настоящее время мой проект выполняется локально. Поэтому я не мог понять, как указать URL-адрес обратного вызова и вывести ответиз этого URL обратного вызова . Логика для обработки ответа, полученного по URL обратного вызова, также указана в их документах.

def compileCode(request):
    if request.is_ajax():
        source = request.POST.get('source')
        lang = request.POST.get('lang')
        client_secret = settings.CLIENT_SECRET
        data = {
           "client_secret": client_secret,
           "async": 1,
           'id': 123,        
           'callback': **what to do here**,
           "source": source,
           "lang": lang,
        }
        res = requests.post(RUN_URL, data=data)
        return JsonResponse(res.json(), safe=False)        
    return HttpResponseBadRequest()

Код для обработки ответа из URL обратного вызова

def api_response(request):
   payload = request.POST.get('payload', '')
   payload = json.loads(payload)
   run_status = payload.get('run_status')
   o = run_status['output']
   return HttpResponse('API Response Recieved!')

Любая помощь приветствуется:)

1 Ответ

0 голосов
/ 11 июня 2018

URL обратного вызова «перезванивает» по веб-адресу, а не по коду, и его можно вызвать методом API, который можно вызвать после того, как это будет сделано.Этот URL может быть чем угодно.Это не обязательно должен быть статический URL.Часто это скрипт для выполнения определенных функций.

Так как здесь вам не нужно ничего выполнять после получения результатов.

Вам не нужно пропускать callback url, оно будет работать даже без него.

Я заставил это работать, просто передав код ниже.

RUN_URL = "https://api.hackerearth.com/v3/code/run/"
CLIENT_SECRET = 'your-client-secret-from-hackerearth'

data = {
    'client_secret': CLIENT_SECRET,
    'async': 1,
    'source': source,
    'lang': lang,
}

r = requests.post(RUN_URL, data=data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...