我知道响应编组看起来像这样:
from flask_restx import fields
some_object = {
'id': fields.Integer(reqired=True),
'name': fields.String(required=True)
}
@api.route('', methods=['POST'])
class SomeClass(Resource):
@api.request_body(SomeInputSchemaJson)
@api.response_ok(some_object)
def post(self) -> str:
return {'id': 3, 'name': 'idk'}, 200
response_ok
装饰器看起来像这样
def response_ok(self, model=None, description=None, code=200):
return self.marshal_with(model, code=code, description=description, mask=False, skip_none=True)
但是!!因为我希望将一些 http 标头添加到我的响应中,所以我想做这样的事情:
from flask_restx import fields
some_object = {
'id': fields.Integer(reqired=True),
'name': fields.String(required=True)
}
@api.route('', methods=['POST'])
class SomeClass(Resource):
@api.request_body(SomeInputSchemaJson)
@api.response_ok(some_object)
def post(self) -> str:
data = {'id': 3, 'name': 'idk'}
return make_response(jsonify(data), 200)
但这不起作用,因为
response_ok
装饰器突然不知道如何处理响应对象。解决这个问题的办法是什么?提前非常感谢!
经过大量搜索,并且遇到了像你这样的类似问题,我已经成功地做到了这一点,而无需调用
make_response()
方法。
举个例子,你可以这样做:
from flask_restx import fields
some_object = {
'id': fields.Integer(reqired=True),
'name': fields.String(required=True)
}
@api.route('', methods=['POST'])
class SomeClass(Resource):
@api.request_body(SomeInputSchemaJson)
@api.response_ok(some_object)
def post(self) -> str:
return {'id': 3, 'name': 'idk'}, 200, {'header': 'content'}
有关官方文档的更多信息:https://flask-restx.readthedocs.io/en/latest/quickstart.html?highlight=headers#resourceful-routing