【发布时间】:2015-02-03 03:42:28
【问题描述】:
我有一个很好用的烧瓶 api。最近,我们增加了一个文件上传部分。一些服务器端代码向 api 发送调用,这反过来会触发对这些上传文件的处理。 api 调用本身包括文件的绝对路径。所以我的路线定义如下:
@app.route('/Uploads/<string:userId>/<string:pathToFile>', methods=['POST'])
处理上传的代码是 PHP。在将路径发送到 api 之前,它通过一种方法发送,该方法避开斜杠,将它们变成 % 符号。对于熟悉它的人来说,该方法称为urlencode。
我遇到的问题是烧瓶无法识别路线。请求会失败,即使它很简单:
localhost:5000/Uploads/testuser/%2Fhome
在上面的例子中,我相信% 字符会导致问题。如果我删除它,则请求成功。
我确实找到了以下似乎相关的 SO 帖子:
How to pass file path in a REST API ala Dropbox using Flask-RESTful? 在其中,FP 建议使用 path 占位符而不是 string。我尝试在我的代码中这样做:
@app.route('/Uploads/<string:userId>/<path:pathToFile>', methods=['POST'])
我给它传递了一条原始路径(没有通过 url 编码)。然而,这并没有奏效。
有人知道通过烧瓶 api 调用传递 url 或路径的正确方法吗?
【问题讨论】:
-
为什么使用 <...>