我正在使用Flask和flask_restful开发一个API,并为我正在研究的项目开发一个匹配的CLI,现在遇到了一些我无法摆脱的事情。在API方面,当我在某个端点上收到请求时,我使用PrettyTable库在终端上构建彩色表。我正在按如下方式构建表格:
t = PrettyTable([ Color.CGREEN2 + 'Username' + Color.CEND,
Color.CGREEN2 + 'Dataset' + Color.CEND,
Color.CGREEN2 + 'Files' + Color.CEND])
for ds in db.getAllDatasets( username ):
t.add_row( [username, ds.dataset, len(ds.files)] )
return t.__str__()
我试图返回 t 对象,但是它不是JSON可序列化的。通过调用 __ str __ 方法,我能够成功返回它,但是无法在终端上正确打印输出。我为此使用的代码是:
try:
r = requests.post(url='http://my-server:my-port/my-endpoint', data=data)
print (str(r.text))
except requests.exceptions.ConnectionError:
MSG_ERROR (self, "Failed to connect to LPS Cluster.")
我得到的输出是:
"+----------+---------+-------+\n| \u001b[92mUsername\u001b[0m | \u001b[92mDataset\u001b[0m | \u001b[92mFiles\u001b[0m |\n+----------+---------+-------+\n+----------+---------+-------+"
有可能看到字符在正确的位置,并且应该可以,但不能。
我想这可能与字符串开头和结尾的引号有关,但我不确定,也不知道该怎么办。
你们能帮我弄对吗?
答案 0 :(得分:1)
好吧,我找到了修复它的方法。在API方面,我通过执行以下操作将响应转换为JSON:
return jsonify(
error_code=HTTPStatus.OK,
message=t.get_string()
)
代替我以前的return t.__str__()
。
之后,在CLI上,我做了
print (r.json()['message'])
它就像一种魅力!
谢谢大家。