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