解析传入Webhook的JSON

时间:2017-07-08 06:01:04

标签: python json django webhooks messagebird

我正在尝试构建一个从第三方服务Messagebird接收JSON POST的webhook。在他们的文档中,他们有一个传出查询的示例:

GET http://your-own.url/script
    ?id=e8077d803532c0b5937c639b60216938
    &recipient=31642500190
    &originator=31612345678
    &body=This+is+an+incoming+message
    &createdDatetime=2016-05-03T14:26:57+00:00

我的webhook是用Django中的Python构建的,这就是我在views.py中的内容:

from django.shortcuts import render
from django.views.decorators.http import require_POST
from django.http import HttpResponse
from .models import UserText

@require_POST
def webhookmb(request):
    usrtxt = json.loads(request.body.decode("utf-8"))

    UserText.objects.create(
        id = usrtxt['id']
        recipient = usrtxt['recipient']
        originator = usrtxt['originator']
        body = usrtxt['body']
        createdDatetime = usrtxt['createdDatetime']
    )

    return HttpResponse(200)

我的目标是将JSON读入文件usrtxt,然后将这些字段映射到模型。我收到此错误(部署在heroku上):

  

JSONDecodeError:期望值:第1行第1列(字符0)

这是因为json.loads正在尝试读取文件而第一个是以GET开头吗?我需要跳过这一行吗?或者还有另一种方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

这可能看起来过于简单,但尝试将@csrf_exempt装饰器添加到您的webhook。