使用烧瓶返回布尔作为POST响应[重复]
Posted
技术标签:
【中文标题】使用烧瓶返回布尔作为POST响应[重复]【英文标题】:return bool as POST response using flask [duplicate] 【发布时间】:2016-05-10 01:38:50 【问题描述】:我正在模拟一个 Post api(用 C# 编写),它在调用时返回一个布尔值 true 或 false。 请求的内容类型为 application/json
true
我现在正在尝试使用 Flask 在 Python 中模拟该端点,我正在努力让它传递一个布尔值。
我试过了
return make_response(True,200)
或者干脆
return True
在这两种情况下,api 都无法发送所需的响应并引发错误。
在绝望的尝试中,我尝试将“True”作为字符串返回
return make_response("True", 200)
这似乎在模拟级别上工作,但消费代码 (c#) 失败,因为它试图将返回值转换为 bool by
result = response.Content.ReadAsAsync<bool>().Result
关于如何让 mock api 返回 bool 值的任何想法???
【问题讨论】:
如果使用小写 t 的字符串,c# 位是否仍然失败? 是的,尝试发送 make_response("true",200) 所以 make.response() 返回一个 flask.response 对象。这是您在退货后的下一步中想要的吗? 【参考方案1】:您没有返回有效的 JSON。在 JSON 中,布尔值是小写的,"true"
。您可以使用 json.dumps
生成正确的 JSON 序列化值。您还应该将响应的内容类型设置为application/json
。使用app.response_class
构建响应。
from flask import json
return app.response_class(json.dumps(True), content_type='application/json')
通常,您会发送多个值作为响应。 Flask 提供 jsonify
作为返回 JSON 对象的快捷方式,其中包含您传递给它的键和值。 (在 Flask 开发版中进行了改进,可以处理对象以外的其他数据。)
from flask import jsonify
return jsonify(result=True, id=id)
【讨论】:
【参考方案2】:您应该考虑发送 json 数据。
return json.dumps(True)
【讨论】:
您可以将其转储为 json 并发送,我已经尝试过它的工作。据我所知,标准 json 应该用于 REST 客户端和 REST 服务器之间的通信。 @DanielF 正如 Davidsm 所说,我无法控制返回的数据,只能模拟。我同意在没有任何密钥的情况下将布尔值作为 Json 的一部分返回是一个糟糕的设计。以上是关于使用烧瓶返回布尔作为POST响应[重复]的主要内容,如果未能解决你的问题,请参考以下文章
视图函数未返回有效响应。烧瓶棉花糖,RestAPI [重复]
烧瓶 request.get_json() 没有收到来自 $.post() 请求的任何内容[重复]