首页 > 解决方案 > 将文件路径作为参数传递给 FLASK(Python) 中的 URL

问题描述

我想构建一个 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)

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

试用 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。我现在的问题是如何在我的代码中使用这个带有文件路径的发布的 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)

标签: python-3.xhttpflaskurl-parameterswerkzeug

解决方案


推荐阅读