Skip to content

Conversation

@sloria
Copy link
Contributor

@sloria sloria commented Feb 16, 2016

It is often useful to be able to return a vendor media type for JSON responses. For example, JSON API requires that all responses have the Content-Type: applications/vnd.api+json header.


def test_jsonify_mimetype():
app = flask.Flask(__name__)
app.config.update({"JSONIFY_MIMETYPE": 'application/vnd.api+json'})

This comment was marked as off-topic.

This comment was marked as off-topic.

@jeffwidman
Copy link
Contributor

LGTM

@untitaker
Copy link
Contributor

LGTM, but the changelog entry is now for the wrong version.

Allow jsonify responses' mimetype to be configured
@sloria sloria force-pushed the jsonify-mimetype branch from a3c574f to 2cfaf04 Compare April 8, 2016 21:39
@sloria
Copy link
Contributor Author

sloria commented Apr 8, 2016

OK, I've rebased with the latest master and put the changelog entry in the 1.0 section.

@davidism davidism merged commit 2bf477c into pallets:master Apr 8, 2016
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 14, 2020
@pallets pallets unlocked this conversation Jul 12, 2022
@davidism
Copy link
Member

I'm currently implementing a new "JSON provider" interface for customizing how an app handles JSON. As part of that, I'm deprecating the app.config["JSONIFY_MIMETYPE"] parameter in favor of setting app.json.mimetype (along with some other config that makes more sense as provider setup).

However, reviewing this I'm not clear that setting the mimetype unconditionally is correct. The JSON API mimetype seems to be specifically for responses related to its own metadata and introspection, not to the actual API responses. It makes much more sense to me to set the content type for the specific responses that need it:

response = jsonify(data)
response.mimetype = "application/vnd.api+json"
return response

Am I missing something here or can I remove the configuration entirely? Note that it would still be possible to change the default using a custom provider:

class VndProvider(DefaultJSONProvider):
    def response(self, *args, **kwargs):
        response = super().response(*args, **kwargs)
        response.mimetype = "application/vnd.cool-api.v1+json"
        return response

app.json = VndProvider(app)

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jul 27, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants