1

I know that response marshalling looks something like this:

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

and the response_ok decorator looks like this

def response_ok(self, model=None, description=None, code=200):
    return self.marshal_with(model, code=code, description=description, mask=False, skip_none=True)

but!! since i would like some http headers to be added to my response, i would like to do something like this:

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)

but that doesn't work, because the response_ok decorator doesn't know how to deal with a response object all of a sudden. What is the solution to this? Thanks a lot in advance!

cassham
  • 21
  • 2

1 Answers1

0

After searching a lot, and having similar issues like you, I've managed to do it without calling to make_response() method.

As an example, you could make this:

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'}

More info on official docs: https://flask-restx.readthedocs.io/en/latest/quickstart.html?highlight=headers#resourceful-routing

And this other response: How to add custom HTTP response header in Flask-RESTful?

fernandezr
  • 660
  • 6
  • 19