将文件路径作为参数传递给FLASK(Python)中的URL

时间:2019-07-12 14:35:28

标签: python-3.x http flask url-parameters werkzeug

我想构建一个api,该api接受用户的文件路径参数,然后处理该路径中给定的文件。要处理的文件已经在要运行api的服务器中。

到目前为止,我已经编写了一个api,在其中我在运行api的代码中对文件路径进行了硬编码。现在,我想以一种可以接受用户文件路径的方式配置我的api。我的api应该接受该路径作为参数,并处理该路径中给出的文件。

api代码如下: convert函数返回文件的类别。

import ectd
from ectd import convert
from flask import Flask, request
from flask_restful import Resource, Api
#from flask.views import MethodView

app = Flask(__name__)
api = Api(app)
#convert(r'D:\files\67cecf40-71cf-4fc4-82e1-696ca41a9fba.pdf')    
class ectdtext(Resource):
    def get(self, result):
        return {'data': ectd.convert(result)}

#api.add_resource(ectdtext, '/ectd/<result>')
categories=convert(r'D:\files\6628cb99-a400-4821-8b13-aa4744bd1286.pdf')    
@app.route('/')
def returnResult():
  return categories

if __name__ == '__main__':
     app.run(host="0.0.0.0", port=5000)

因此,我想对此代码进行更改以接受来自用户的参数,该参数将是文件路径,而convert函数将处理该文件路径。我想知道如何使我的api接受用户的filepath参数。

使用requests.args.get进行试用:

    import ectd
    from ectd import convert
    from flask import Flask, request
    from flask_restful import Resource, Api
    #from flask.views import MethodView

    app = Flask(__name__)
    api = Api(app)
    #convert(r'D:\files\67cecf40-71cf-4fc4-82e1-696ca41a9fba.pdf')    
    class ectdtext(Resource):
        def get(self, result):
            return {'data': ectd.convert(result)}

    #api.add_resource(ectdtext, '/ectd/<result>')

    @app.route('/')
    def returnResult():
     categories=convert(r'D:\files\'.format(request.args.get('categories')))
    return categories

    if __name__ == '__main__':
         app.run(host="0.0.0.0", port=5000)

导致错误: “ RuntimeError:在请求上下文之外工作。

这通常意味着您尝试使用所需的功能 活动的HTTP请求。查阅有关测试的文档 有关如何避免此问题的信息。”

当前场景:

我能够将文件路径发布到URL。我的问题是,现在如何在代码中使用带有文件路径的已发布网址来触发函数,该函数接收文件路径并处理文件。发布文件路径的代码:

import ectd
from ectd import convert
from flask import Flask, request
from flask_restful import Resource, Api
#from flask.views import MethodView

app = Flask(__name__)
api = Api(app)   
class ectdtext(Resource):
    def get(self, result):
        return {'data': ectd.convert(result)}

#api.add_resource(ectdtext, '/ectd/<result>')
categories=convert('/home/brian/ajay/files/5ca21af9-5b67-45f8-969c-ae571431c665.pdf')   
@app.route('/')
def returnResult():
  return categories



@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
    return path

#@app.route('/get_dir/<path>')
#def get_dir(path):
#    return path

if __name__ == '__main__':
     app.run(host="0.0.0.0", port=5000)

0 个答案:

没有答案