我有 json 数据将以以下格式发送到我的服务器:
{"line":"one"}
{"line":"two"}
{"line":"three"}
虽然我意识到这不是有效的 json 格式,但我无法控制这些数据是如何到达我的。我需要能够逐行读取数据
现在我有一个非常简单的 Cherrypy 服务器设置来接受 POST 请求。这是处理 POST 请求的函数:
class PostEvent(object):
exposed = True
def POST(self, **urlParams):
cl = cherrypy.request.headers['Content-Length']
raw_body = cherrypy.request.body.read(int(cl))
lines = raw_body.splitlines()
with open('log.txt', 'w') as f:
for line in lines:
f.write('%s\n' % line)
然后我只需发出以下curl
命令进行测试:
curl -i -k -H "Content-Type: application/json" -H "Accept: application/json" -X POST --data @test_data -u username http://test-url.com
该文件test_data
包含上面指定格式的我的 json 数据。我收到 200 响应,但是,从文件中读取的所有数据都在一行中,如下所示:
{"line":"one"}{"line":"two"}{"line":"three"}
似乎当cherrypy读取正文时,它忽略了行分隔符,例如\n
. 如何让cherrypy读取格式化的请求正文?或者更具体地说,我怎样才能逐行而不是一次读取请求正文?