Как сделать URL запроса "api/reviews?start_date=mm-dd-yyyy&end_date=mm-dd-yyyy" в колбе?
Я новичок в колбе, и я строю успокоительный API с помощью колбы.
class Review(Resource):
def get(self, id = None):
data = []
if id:
review_info = db.reviews.find_one({'_id': id})
if review_info:
return jsonify(review_info)
else:
return {"response": "no review found for {}".format(id)}
И мои маршруты в настоящее время
class Index(Resource):
def get(self):
return redirect(url_for("reviews"))
api = Api(app)
api.add_resource(Review, "/api/reviews/<int:id>", endpoint="id")
Я хочу создать URL "api/reviews? Start_date=dd-mm-yyyy&end_date=dd-mm-yyyy", как я могу это сделать? Я не хочу создавать URL вида "api/start_date/../end_date/.."
1 ответ
Решение
Этого вы можете достичь, используя marshmellow lib, который даст вам возможность прочитать параметры запроса в вашем запросе get . Ниже приведен пример реализации вашего запроса.
from marshmallow import Schema, fields
class ReviewRequestFormat(Schema):
start_date=fields.Str(required=True)
end_date=fields.Str(required=True)
id=fields.Str(required=True)
class Review(Resource):
@use_kwargs(ReviewRequestFormat)
def get(self, **kwargs):
id=kwargs.get('id')
data = []
if id:
review_info = db.reviews.find_one({'_id': id})
if review_info:
return jsonify(review_info)
else:
return {"response": "no review found for {}".format(id)}
ваши маршруты будут как ниже
class Index(Resource):
def get(self):
return redirect(url_for("reviews"))
api = Api(app)
api.add_resource(Review, "/api/reviews/", endpoint="id")
за дополнительной документацией по зефиру вы можете обратиться - https://marshmallow.readthedocs.io/en/latest/