Desead
@Desead

Как правильно обработать коллбэк в джанго?

Есть сайт на котором необходимо обработать коллбэк. Так как я ни разу не делал этого, то прошу высказаться о правильности моих мыслей.
1. Коллбэк это обычный внешний запрос. То есть мне не важна природа этого запроса - его может инициировать как браузер клиента так и любой сторонний сервис
2. Коллбэк это только GET запрос или может быть и POST ?
3. для обработки я создаю отдельный адрес в url.py на котором висит обычная вьюха с входящим request. Далее этот request я разбираю на части в зависимости от структуры отдаваемых мне данных ?
4. Если 3 вопрос да, то что делать если на этот адрес какой то злоумышленник начнёт слать всякий мусор ?
5. Ответом мне нужно вернуть "ок". Тут я совсем непонял. Куда именно вернуть этот ок? Просто в конце вьюхи написать return HttpResponse('ок') ?

Думаю создавать повторно тему смысла нет, продолжу здесь.
Вот что я написал для обработка колбэка:

class CallBackPage(View):
def get(self, request):
with open(BASE_DIR / 'logs/callback.log', 'a', encoding='utf-8') as f:
f.write('callback log get' + '\n')
f.write(str(request.GET) + '\n')
return HttpResponse('ok')

def post(self, request):
with open(BASE_DIR / 'logs/callback.log', 'a', encoding='utf-8') as f:
f.write('callback log post' + '\n')
f.write(str(request.POST) + '\n')
return HttpResponse('ok')


т.е. на адрес прописанный в url.py жду запроса. Если я сам туда жму в браузере, то все срабатывает нормально. Обрабатывается GET запрос и текст запроса пишется в текстовый файл.
Когда я жду от стороннего сервиса запрос, который должен быть отправлен POST, то ничего не происходит. Что неправильно? Возможно я не понимаю каких то базовых фундаментальных вещей ?
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
  1. Да.
  2. Только POST.
  3. Да.
  4. Не обрабатывать мусор и/или принимать с запросом ключ, неизвестный злоумышленику.
  5. Да.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы