Python Flask restful路由函数的使用是否正确?
我可以访问Python Flask restful路由函数的使用是否正确?,python,flask,flask-restful,Python,Flask,Flask Restful,我可以访问/v1/文件夹,但无法访问/v1/文件夹。你能告诉我原因吗?在所述的add_resource()中,可以路由多个URI。但我不能。也许我误解了什么。如果你找到线索,请告诉我 from flask import request from flask_restful import Resource, abort class Folder(Resource): def post(self, folder_id): return { "message":"post with
/v1/文件夹
,但无法访问/v1/文件夹
。你能告诉我原因吗?在所述的add_resource()
中,可以路由多个URI。但我不能。也许我误解了什么。如果你找到线索,请告诉我
from flask import request
from flask_restful import Resource, abort
class Folder(Resource):
def post(self, folder_id):
return { "message":"post with folder_id"}, 200
def post(self):
return { "message":"post without folder_id"}, 201
app = Flask(__name__)
.....
api_bp = Blueprint('api', __name__)
api = Api(api_bp, serve_challenge_on_401=True)
api.add_resource( Folder, '/v1/folder', '/v1/folder/<string:folder_id>')
app.register_blueprint(api_bp)
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True )
来自flask导入请求
从restful导入资源中,中止
类文件夹(资源):
def post(自我,文件夹id):
返回{“message”:“post with folder_id”},200
def post(自我):
返回{“message”:“post without folder_id”},201
app=烧瓶(名称)
.....
api\u bp=蓝图('api',\u名称\u)
api=api(api\U bp,发球\U挑战\U 401=True)
api.add_资源(文件夹“/v1/Folder”、“/v1/Folder/”)
应用程序注册蓝图(api\U bp)
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(host='0.0.0.0',debug=True)
错误消息是“TypeError:post()获取了意外的关键字参数‘folder_id’”。怎么了 Python不支持函数/方法重载,因此您上一次声明的
post
方法始终是使用的方法。相反,您应该使用Python为参数提供的工具-默认值
我个人会做以下工作:
from flask import request
from flask_restful import Resource, abort
class Folder(Resource):
def post(self, folder_id=None):
if folder_id is None:
return self.__simple_post()
else:
return self.__parameter_post(folder_id)
def __parameter_post(self, folder_id):
return { "message":"post with folder_id"}, 200
def __simple_post(self):
return { "message":"post without folder_id"}, 201
app = Flask(__name__)
.....
api_bp = Blueprint('api', __name__)
api = Api(api_bp, serve_challenge_on_401=True)
api.add_resource( Folder, '/v1/folder', '/v1/folder/<string:folder_id>')
app.register_blueprint(api_bp)
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True )
来自flask导入请求
从restful导入资源中,中止
类文件夹(资源):
def post(自我,文件夹_id=None):
如果文件夹\u id为“无”:
返回self.\uuu simple\u post()
其他:
返回self.\u参数\u post(文件夹\u id)
def参数post(自身、文件夹id):
返回{“message”:“post with folder_id”},200
def___simple_post(self):
返回{“message”:“post without folder_id”},201
app=烧瓶(名称)
.....
api\u bp=蓝图('api',\u名称\u)
api=api(api\U bp,发球\U挑战\U 401=True)
api.add_资源(文件夹“/v1/Folder”、“/v1/Folder/”)
应用程序注册蓝图(api\U bp)
如果名称=“\uuuuu main\uuuuuuuu”:
app.run(host='0.0.0.0',debug=True)
或者,如果逻辑足够相似且不太长,可以在
post
方法中处理逻辑。如果逻辑最终是不可读的,请考虑使用我提出的方法。欢迎你。事实上,几天前我自己也必须这样做,所以我仍然记得我是如何处理的。