以下内容使我印象深刻,但确实有效。有没有办法让烧瓶轻松地使用相同的资源类来处理两种标准的get方法(即获得所有东西并获得一件物品)?
谢谢。
from flask_restful import Resource
# ...
class People(Resource):
def get(self):
return [{'name': 'John Doe'}, {'name': 'Mary Canary'}]
class Person(Resource):
def get(self, id):
return {'name': 'John Doe'}
# ...
api.add_resource(People, '/api/people')
api.add_resource(Person, '/api/people/<string:id>')
Run Code Online (Sandbox Code Playgroud)
我认为这是您要寻找的:
from flask_restful import Resource
# ...
class People(Resource):
def get(self, id=None):
if not id:
return {'name': 'John Doe'}
return [{'name': 'John Doe'}, {'name': 'Mary Canary'}]
api.add_resource(People, '/api/people', '/api/people/<id>')
Run Code Online (Sandbox Code Playgroud)
您可以限制id购买,将其添加为请求解析器的参数:
parser.add_argument('id', location='view_args', type=..)
Run Code Online (Sandbox Code Playgroud)
是的,查看参数解析文档。如果需要,这将使您可以灵活地围绕随请求接收的参数创建一些逻辑。
from flask_restful import Api, Resource, reqparse
# ...
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('id')
class People(Resource):
def get(self):
data = parser.parse_args()
if not data['id']:
return [{'name': 'John Doe'}, {'name': 'Mary Canary'}]
else:
# data lookup using id
# for example using SQLAlchemy...
# person = Person.query.filter_by(id = data['id']).first_or_404()
return {'id': data['id'], 'name': 'John Doe'}
api.add_resource(People, '/api/people')
Run Code Online (Sandbox Code Playgroud)
然后尝试:
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |