responderでboundaryを含んだform valueが取得できない
タイトル通りです.
responderでform valueを取得するコードを書いたときに,boundaryを含むmultipart/form-data
リクエストを投げると,parseに失敗し,正しく値を取得することができません.
Enviroment
versionは以下になります。
responder 1.3.1
Example
import responder api = responder.API() @api.route("/") async def hoge(req, resp): req.media = await req.media() if __name__ == "__main__": api.run(port=8080)
boundaryを含まないrequest
import requests URL = "http://127.0.0.1:8080" payload = { "user": "test_user", "password": "hoge", } r = requests.post(URL, data=payload) print(r.text) # => {"user": "test_user", "password": "hoge"}
boundaryを含むrequest
import requests URL = "http://127.0.0.1:8080" files = { "user": (None,"test_user"), "password": (None, "hoge"), } r = requests.post(URL, files=files) print(r.text) # => {" name": "\"password\"\r\n\r\nhoge\r\n--3dec707edd260e174530419810e62f2c--\r\n"}
curl
などでmultipart/form-data
のrequestを投げると, form valueのみでもboundaryがついてくるので, APIを作ってcurl
でテストしていたりしたらハマると思います。
$ curl -X POST -F "user=test_user" -F "password=hoge" localhost:8080
対応策
prを出してmergeされたので,GitHubからpip install
すると使えるようになります。
https://github.com/taoufik07/responder/pull/367
https://github.com/taoufik07/responder/pull/378
8/22追記
pypiに新しいversionが登録されたようなので、pip install
で行けると思います.