我如何使用Python Flask模仿Java Springs @PathVariable

时间:2019-04-29 14:43:34

标签: python python-3.x flask flask-restful

from flask import Flask, jsonify, request
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)
user_dict = {}


class User(Resource):
    def __init__(self):
        user_id = 0

    def get(self):
        return jsonify(user_dict[id])

api.add_resource(User, "/user")

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

这个想法是,当对/ user / 1发出GET请求时,get方法将返回user_dict的键/值对。如何在Python中执行路径变量?请假定字典不为空。

1 个答案:

答案 0 :(得分:1)

Flask在URL路径注册中使用<variable_name> or <converter:variable_name> placeholders

这在Flask-Restful Quickstart documentation中显示的示例中使用:

class TodoSimple(Resource):
    def get(self, todo_id):
        return {todo_id: todos[todo_id]}

    def put(self, todo_id):
        todos[todo_id] = request.form['data']
        return {todo_id: todos[todo_id]}

api.add_resource(TodoSimple, '/<string:todo_id>')

<string:todo_id>是一个路径变量,作为参数传递给TodoSimple.get()TodoSimple.put()方法。

Flask-Restful假定您大致熟悉Flask的模式,我强烈建议您至少通读Flask Quickstart document,如果没有其他情况,我建议您也阅读tutorial。 / p>

对于您的特定示例,如果用户ID始终是整数,请使用:

class User(Resource):
    def get(self, user_id):
        return jsonify(user_dict[user_id])

api.add_resource(User, "/user/<int:user_id>")