对于Django / DRF,我需要与Flask的request.get_data()
等效。它几乎可以与str.encode(json.dumps(request.data))
一起使用,但是输出键对之间包含空格:值和现有链接的符号都不会转义。
烧瓶输出(对我有用):
b'{"token":"xxxx","team_id":"TDB6U9XM1","api_app_id":"yyyyyy","event":{"type":"link_shared","user":"UDC5TRW0M","channel":"CE9GC5C4R","message_ts":"1543451681.002600","links":[{"url":"http:\\/\\/testing.serv-dev.pl\\/viewer\\/3\\/24","domain":"serv-dev.pl"}]},"type":"event_callback","event_id":"EvEE40NTSM","event_time":1543451682,"authed_users":["UDC5TRW0M"]}'
当前Django输出:
b{"token": "xxxx", "team_id": "TDB6U9XM1", "api_app_id": "yyyyyy", "event": {"type": "link_shared", "user": "UDC5TRW0M", "channel": "CE9GC5C4R", "message_ts": "1543452606.003600", "links": [{"url": "http://testing.serv-dev.pl/viewer/3/24", "domain": "serv-dev.pl"}]}, "type": "event_callback", "event_id": "EvEENV65TU", "event_time": 1543452607, "authed_users": ["UDC5TRW0M"]}'
。
这是专门针对slack request signature verification的,它专门要求传递raw request body
。
访问request.body
可能由于POST方法而引发错误django.http.request.RawPostDataException: You cannot access body after reading from request's data stream
。