[flask小坑] request.json 无法获取请求body的json数据
程序员文章站
2022-06-07 19:31:46
...
写接口自动化测试的时候,发现用httpie发送带有put请求,flask后端api可以获取到json数据,而我用robotframework发送的请求就不行,flask的
request.json
获取到的数据为None
怎么办?查文档,看代码呗
代码 https://github.com/pallets/flask/blob/master/flask/wrappers.py#L53:22
@property
def json(self):
"""This will contain the parsed JSON data if the mimetype indicates
JSON (:mimetype:`application/json`, see :meth:`is_json`), otherwise it
will be ``None``.
"""
return self.get_json()
def _get_data_for_json(self, cache):
return self.get_data(cache=cache)
def get_json(self, force=False, silent=False, cache=True):
"""Parse and return the data as JSON. If the mimetype does not
indicate JSON (:mimetype:`application/json`, see
:meth:`is_json`), this returns ``None`` unless ``force`` is
true. If parsing fails, :meth:`on_json_loading_failed` is called
and its return value is used as the return value.
:param force: Ignore the mimetype and always try to parse JSON.
:param silent: Silence parsing errors and return ``None``
instead.
:param cache: Store the parsed JSON to return for subsequent
calls.
"""
原来这个 request.json
调用的是 request.get_json()
这个函数,但是 get_json
这个函数默认情况下只对 mime 为 application/json
的请求可以正确解析。
所以解决办法是
- http 请求增加
Content-Type:application/json
header - 或者 使用
request.get_json(force=True)
忽略mimetype
还是要仔细看文档呀,。。
上一篇: echarts图表没有数据的时候,在页面显示暂无数据
下一篇: PHP生成验证码 第二弹,强势来袭