Flask-restful using nested fields to generate docs with nested response, getting TypeError: Object of type Nested is not JSON serializable
Flask-restful using nested fields to generate docs with nested response, getting TypeError: Object of type Nested is not JSON serializable
我正在使用 flask-restx / flask-restplus,尝试利用 swagger 文档生成功能。我的模型有这个设置。
A = api.model(
'A', {
"a1": fields.String(description=''),
"a2": fields.String(description='')
}
)
B = api.model(
'B', {
"b1": fields.String(description=''),
"b2": fields.String(description='')
},
)
response_with_nested_data = api.model(
"TLD", {
"A": fields.Nested(
A, description=''
),
"B": fields.Nested(
B, description=''
)
}
)
我有一个处理程序看起来像
@myapi.route('/aa', methods=['POST'])
class AA(Resource):
@myapi.expect(simple_expected_model)
@myapi.response(200, response_with_nested_data)
@do_auth(require_token=True, render_errors=True)
def post(self):
return handle_request(request)
我正在尝试从这个 api 端点获取输出,在 swagger 文档中,看起来像
{
"A": {
"a1": "a",
"a2": "aa"
}
"B": {
"b1": "b",
"b2": "bb"
}
}
但是当启动我的服务器并点击我的 swagger 文档生成页面时,我收到一个错误
TypeError: Object of type Nested is not JSON serializable
所以我知道我在这里做错了什么。有什么想法我哪里出错了,我应该怎么做?
我最终通过在装饰器中使用关键字解决了这个问题。
@myapi.response(200, response_with_nested_data)
变成了
@myapi.response(code=200, model=response_with_nested_data, description='')
我正在使用 flask-restx / flask-restplus,尝试利用 swagger 文档生成功能。我的模型有这个设置。
A = api.model(
'A', {
"a1": fields.String(description=''),
"a2": fields.String(description='')
}
)
B = api.model(
'B', {
"b1": fields.String(description=''),
"b2": fields.String(description='')
},
)
response_with_nested_data = api.model(
"TLD", {
"A": fields.Nested(
A, description=''
),
"B": fields.Nested(
B, description=''
)
}
)
我有一个处理程序看起来像
@myapi.route('/aa', methods=['POST'])
class AA(Resource):
@myapi.expect(simple_expected_model)
@myapi.response(200, response_with_nested_data)
@do_auth(require_token=True, render_errors=True)
def post(self):
return handle_request(request)
我正在尝试从这个 api 端点获取输出,在 swagger 文档中,看起来像
{
"A": {
"a1": "a",
"a2": "aa"
}
"B": {
"b1": "b",
"b2": "bb"
}
}
但是当启动我的服务器并点击我的 swagger 文档生成页面时,我收到一个错误
TypeError: Object of type Nested is not JSON serializable
所以我知道我在这里做错了什么。有什么想法我哪里出错了,我应该怎么做?
我最终通过在装饰器中使用关键字解决了这个问题。
@myapi.response(200, response_with_nested_data)
变成了
@myapi.response(code=200, model=response_with_nested_data, description='')