使用烧瓶返回布尔作为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 [重复]

烧瓶上的POST请求失败[重复]

烧瓶 request.get_json() 没有收到来自 $.post() 请求的任何内容[重复]

烧瓶 PyMongo 字符串返回 ObjectID [重复]

烧瓶,一条闪光消息没有显示[重复]

Pandas 数据框到烧瓶模板作为 json [重复]