【问题标题】:How to pass file path in a REST API ala Dropbox using Flask-RESTful?如何使用 Flask-RESTful 在 REST API ala Dropbox 中传递文件路径?
【发布时间】:2013-11-09 13:38:23
【问题描述】:

Dropbox 有一个 REST API,允许使用以下 URL 上传文件。 (Reference)

https://api-content.dropbox.com/1/files_put/<root>/<path>?param=val

我想使用 Flask-RESTful 复制这个 API 结构。我有以下课程。

class File(restful.Resource):

    def put(self, fname):
        // do stuff here

然后该类会自动映射到以下代码。

app = Flask(__name__)
api = restful.Api(app)

api.add_resource(File, '/<string:fname>')

if __name__ == '__main__':
    app.run(debug=True)

使用以下curl 命令上传文件就可以了。

curl 127.0.0.1:5000/foo.txt -X PUT --data-urlencode file@foo.txt

但是,以下命令失败。

curl 127.0.0.1:5000/foo/bar.txt -X PUT --data-urlencode file@bar.txt

这是因为 127.0.0.1:5000/foo 被视为另一种 REST 资源,未在我的代码中映射。

有没有一种方法可以使用 Flask-RESTful 库来完成我想要的工作?

【问题讨论】:

    标签: python flask flask-restful


    【解决方案1】:

    您可以尝试使用path 占位符代替string

    api.add_resource(File, '/<path:fname>')
    

    【讨论】:

    • 呵呵,真不敢相信我错过了!
    • 很容易错过。我可能错了,但我认为在 Flask 文档中甚至没有一个使用 path 的示例。
    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2012-06-04
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多