Google App Engine(エンドポイントを使用しない)にREST APIを構築しています。これにより、ユーザーはCSVやタブ区切りのファイルをアップロードして重複する可能性のあるものを検索できます。 APIなので、<form>
やBlobStoreのupload_url
は使用できません。私はまた、このAPIを呼び出す単一のWebクライアントを持つことに頼ることはできません。代わりに、ユーザーは理想的には、要求のbody
でファイルを送信します。POST要求本体で改行が削除されましたか?
私の問題は、タブ区切りファイルの内容を読み込もうとすると、すべての改行文字が削除されていることが分かります。そのため、コンテンツを行に分割する方法がありません。
私は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...'
RequestHandler
はリクエストボディの内容をログに記録します:
import logging
class ReportApi(webapp2.RequestHandler):
def post(self):
logging.info(self.request.body)
...
だから私は、APIがdev_appserver
curl
経由
curl -X POST -d @data/occ_sample.txt http://localhost:8080/api/v0/report
で実行して呼び出したとき
これは、ログに表示:あなたが見ることができるように、(それぞれrights
と123456
)ヘッダと最初のレコードの最後の値の間には何もありません
id type modified language rights123456 PhysicalObject 2015-11-11 11:50:59.0 en http://creativecommons.org/licenses/by-nc/3.0
と同じで最後の値で発生各レコードの最初のレコードと次のレコードの最初のレコード。
私はここで何かが分かりませんか? self.request.body
、self.request.body_file
、self.request.POST
のデータをロードしようとしましたが、動作していないようです。私はまた、Content-Type
値text/csv
,text/plain
,application/csv
をリクエストヘッダーに適用しようとしましたが、成功しませんでした。別のContent-Type
を追加する必要がありますか?
ありがとうございます!私は '--data-binary'で試してみましたが、それは魅力的でした。 – JOT