小编JOT*_*JOT的帖子

在 POST 请求正文中删除了换行符?(谷歌应用引擎)

我正在 Google App Engine 上构建一个 REST API(不使用端点),它将允许用户上传 CSV 或制表符分隔的文件并搜索潜在的重复项。由于它是一个 API,我不能使用<form>s 或 BlobStore 的upload_url. 我也不能依赖一个调用这个 API 的 Web 客户端。相反,理想情况下,用户将body在请求中发送文件。

我的问题是,当我尝试读取制表符分隔文件的内容时,我发现所有换行符都已删除,因此无法将内容拆分为行。

如果我直接在 Python 解释器上检查文件的内容,我会看到有制表符和换行符(示例中的输出被截断)

>>> with open('./data/occ_sample.txt') as o:
...     o.read()
... 
'id\ttype\tmodified\tlanguage\trights\n123456\tPhysicalObject\t2015-11-11 11:50:59.0\ten\thttp://creativecommons.org/licenses/by-nc/3.0\n...'
Run Code Online (Sandbox Code Playgroud)

RequestHandler记录的请求主体的内容:

import logging
class ReportApi(webapp2.RequestHandler):
    def post(self):
        logging.info(self.request.body)
        ...
Run Code Online (Sandbox Code Playgroud)

所以当我调用在dev_appservervia中运行的API时curl

curl -X POST -d @data/occ_sample.txt http://localhost:8080/api/v0/report
Run Code Online (Sandbox Code Playgroud)

这显示在日志中:

id  type    modified    language    rights123456    PhysicalObject  2015-11-11 11:50:59.0   en  http://creativecommons.org/licenses/by-nc/3.0
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,有标题的最后一个值和第一条记录(之间没有任何东西rights,并123456分别),并与每个记录的最后一个值和下的第一个同样的情况。

我在这里遗漏了一些明显的东西吗?我尝试使用self.request.body,self.request.body_file和加载数据 …

python post google-app-engine newline

1
推荐指数
1
解决办法
1026
查看次数

标签 统计

google-app-engine ×1

newline ×1

post ×1

python ×1