flask-restful 在同一类中同时实现 get/<id> 和 post 的 JSON

5 投票
1 回答
7286 浏览
提问于 2025-04-18 13:29

如果把 # api.add_resource(User, '/user/') 这一行前面的注释去掉,get 方法就能正常工作。而如果想让 post 方法正常工作,就需要把另一行 api.add_resource 的注释去掉。

那么,我该怎么才能让这两个路径都能正常工作呢?

from flask import Flask, request
from flask.ext.restful import reqparse, abort, Api, Resource
import os
# set the project root directory as the static folder, you can set others.
app = Flask(__name__)
api = Api(app)

class User(Resource):

    def get(self, userid):
        print type(userid)
        if(userid == '1'):
            return {'id':1, 'name':'foo'}
        else:
            abort(404, message="user not found")

    def post(self):
        # should just return the json that was posted to it
        return request.get_json(force=True)

api.add_resource(User, '/user/')
# api.add_resource(User, '/user/<string:userid>')

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

1 个回答

12

Flask-Restful 这个工具支持为一个资源注册多个网址。你只需要在注册 User 资源的时候,把两个网址都提供上就可以了:

api.add_resource(User, '/user/', '/user/<userid>')

撰写回答