跳过正文

企业微信开发填坑

Tech WeChat Django
浮世絵空事
作者
浮世絵空事
所谓灵魂 几行代码

( ̄◇ ̄;) 啊 果然是好记性不如烂笔头 才下班没多久居然就要忘了

第一坑 POST方法接收请求后,数据解析失败
#

框架当然是Django REST framework

临床表现为:读取request.data提示不支持

提示如下

{UnsupportedMediaType}不支持请求中的媒体类型 “text/xml”

然而仔细看下调试信息就会发现 request.stream.body 里就是我想要的信息。

那解决方法是啥,当然是徒手撸一个Parser,然后告诉他 media_type = 'text/xml',也没啥技术含量,因为这个代码都是COPY来的,略作修改就行

参考 Django REST framework- Custom parsers

from rest_framework.parsers import BaseParser


class TextXMLParser(BaseParser):
    """
    Plain text parser.
    """
    media_type = 'text/xml'

    def parse(self, stream, media_type=None, parser_context=None):
        """
        Simply return a string representing the body of the request.
        """
        return stream.read()

然后在继承了APIView的类里注明 parser_classes 即可

from rest_framework.views import APIView

class Example(APIView):
    parser_classes = (TextXMLParser,)

    def post(self, request):
      data=request.data