Параметр API динамического отдыха Python Django - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать Rest API с Django для сбора веб-трафика, как это сделал Google Analytics. Можно ли создать параметр API динамического отдыха с запросом POST что-то вроде этого

http POST localhost:8000/collect/ pr1nm=abc pr2nm=bcd

с ограничением динамического параметра от 1 до 200, поэтому мы можем использовать pr1nm до pr200nm. До сих пор я использую данные JSON по моему запросу, как

http POST localhost:8000/collect/ productname='{"pr1nm":"abc", "pr2nm":"bcd"}'

причина, по которой мы хотим это сделать, потому что нам также нужно проверить эту полезную нагрузку в протоколе аналитических измерений Google (https://ga -dev-tools.appspot.com / hit-builder / ), который нужен динамический параметр (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#pr_nm)

есть идеи? спасибо раньше!

1 Ответ

0 голосов
/ 25 февраля 2019

Спасибо @ aj-parr за ваше предложение для моего запроса ввода, и именно так я и решил свою проблему.

в views.py, я преобразовал данные в словарь

@api_view(["POST"])
def add_payload(request):
    received_data = dict(request.GET)
    # celery task
    task_add_payload.delay(received_data)

, а затем в файле task.py я использую регулярное выражение для фильтрации параметров запроса.с точным форматом (пример: pr200nm, где pr + число + нм)

@app.task(name="add-payload-task")
def task_add_payload(received_data):
    import re
    for key in received_data.keys():
        if re.match(r"pr\d+nm$", key):
            # save to dictionary/list and then save to pr_nm table.

спасибо.

...