Hi cả nhà,
Mình đang học làm API bằng flask-restplus, mình đang gặp vấn đề khi dùng parser (reqparse). Nếu input đầu vào là 1 json đơn thuần thì mình làm được rồi
from flask_restplus import fields
from rest_api_demo.api.restplus import api
# Model
book_model = api.model('Book', {
'id': fields.Integer(description='The unique identifier of a book'),
'title': fields.String(required=True, description='Book title')
})
.....
# Parser
from flask_restx import reqparse
book_parser = reqparse.RequestParser(bundle_errors=True)
book_parser .add_argument('id', required=True, type=int, location="json",help ="The unique identifier of a book")
book_parser .add_argument('title', required=True, type=int, location="json",help ="Book title")
....
# API
@book_ns.route('/test')
@book_ns.expect(book_model)
class Test(Resource):
@util.rest_workflow_permission_required('book_page')
def post(self):
data = book_parser.parse_args()
return data
Nhưng vấn đề nảy sinh là nếu đầu vào là JSON lồng nhau thì mình chưa biết cách nào để làm, mình có tìm hiểu thì có “nested model”:
book_category = api.model('Book category', {
'id': fields.Integer(description='The unique identifier of a book'),
'title': fields.String(required=True, description='Book title'),
'book': fields.Nested(book_model)
})
book_category = api.model('Book category', {
'id': fields.Integer(description='The unique identifier of a book'),
'title': fields.String(required=True, description='Book title'),
'book': fields.List(fields.Nested(book_model))
})
Nhưng mà mình không biết cách nào để dùng parser lấy dữ liệu ra từ model này cả, mong được mọi người chỉ giáo.
Mình xin chân thành cảm ơn.