美文网首页
Python requests.post方法中data与json

Python requests.post方法中data与json

作者: Sunnky | 来源:发表于2017-09-25 17:37 被阅读0次

    requests.post()方法
    源码如下:

    def post(url, data=None, json=None, **kwargs):
        r"""Sends a POST request.
    
        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.
        :param json: (optional) json data to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :return: :class:`Response <Response>` object
        :rtype: requests.Response
        """
    
        return request('post', url, data=data, json=json, **kwargs)
    

    可以看到,参数中明确的参数有datajson
    datajson既可以是str,也可以是dict
    区别如下:

    • 不管jsonstr还是dict,如果不指定headers中的content-type,默认为application/json
    • datadict时,如果不指定content-type,默认为application/x-www-form-urlencoded,相当于普通form表单提交的形式,此时数据可以从request.POST里面获取,而request.body的内容则为a=1&b=2的这种形式,注意,即使指定content-type=application/json,request.body的值也是类似于a=1&b=2,所以并不能用json.loads(request.body.decode())得到想要的值
    • datastr时,如果不指定content-type,默认为application/json

    content-type=application/json下,获取值的方法如下:

    json.loads(request.body.decode())
    

    相关文章

      网友评论

          本文标题:Python requests.post方法中data与json

          本文链接:https://www.haomeiwen.com/subject/bsydextx.html