{"id":14065251,"url":"https://github.com/cs91chris/flask_response_builder","last_synced_at":"2025-04-12T12:52:23.684Z","repository":{"id":57430650,"uuid":"165944733","full_name":"cs91chris/flask_response_builder","owner":"cs91chris","description":"Implementations of flask response in many formats like: json, xml, html...","archived":false,"fork":false,"pushed_at":"2022-12-11T23:21:52.000Z","size":85,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-19T15:51:25.679Z","etag":null,"topics":["builder","content-negotiation","data-format","flask","json-encoder","jsonp","response","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cs91chris.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-16T00:24:02.000Z","updated_at":"2023-07-06T18:38:06.000Z","dependencies_parsed_at":"2023-01-27T09:01:20.010Z","dependency_job_id":null,"html_url":"https://github.com/cs91chris/flask_response_builder","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs91chris%2Fflask_response_builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs91chris%2Fflask_response_builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs91chris%2Fflask_response_builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs91chris%2Fflask_response_builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cs91chris","download_url":"https://codeload.github.com/cs91chris/flask_response_builder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248571604,"owners_count":21126519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["builder","content-negotiation","data-format","flask","json-encoder","jsonp","response","rest-api"],"created_at":"2024-08-13T07:04:23.428Z","updated_at":"2025-04-12T12:52:23.663Z","avatar_url":"https://github.com/cs91chris.png","language":"Python","readme":"Flask-ResponseBuilder\n=====================\n\n|download| |version|\n\nImplementations of flask response in many formats: base64, csv, json, xml, html, yaml.\nYou can create your own builder extending ``Builder`` class and registering it with ``register_builder`` method.\n\nEvery builders are registered as attribute of ``ResponseBuilder`` class so you can invoke method from this class\nwith builder's name and it automatically create a response with that builder.\n\nAlso you can used ``Builder`` without response by invoking static methods: ``to_me``, ``to_dict``.\n\nBased on PyYAML, xmltodict, dicttoxml. See their documentation for other options.\n\n- Decorator for http response status ``204 NO_CONTENT``\n- Response based on ``Accept`` header of request\n- Response based on format parameter (query string)\n- template_or_json: response based on xhr request (deprecated: works only with old js library)\n- Support for case notation checker and converter, see ``Case`` utility class.\n- ``Transformer``: utility class for data notation conversion\n\n**NOTE**: From 2.1.11 the ``dicttoxml`` package seems to be abandoned, so a copy of module ``dicttoxml``\nis ported in this package to fix deprecation warning, but if ``dicttoxml`` is installed it has priority.\nIn future will be removed and the internal module will be improved.\n\nQuickstart\n~~~~~~~~~~\n\nInstall ``flask_response_builder`` using ``pip``:\n\n::\n\n   $ pip install Flask-ResponseBuilder\n\nThen import it into your project:\n\n::\n\n   $ from flask_response_builder import ResponseBuilder\n\n\n.. _section-1:\n\nExample usage\n^^^^^^^^^^^^^\n\n.. code:: python\n\n    app = Flask(__name__)\n    app.config['RB_HTML_DEFAULT_TEMPLATE'] = 'response.html'\n    rb = ResponseBuilder(app)\n\n    @app.route('/nocontent')\n    @rb.no_content\n    def nocontent():\n        pass\n\n    @app.route('/xhr')\n    @rb.template_or_json('response.html')\n    def test_xhr():\n        return data\n\n    @app.route('/onaccept')\n    @rb.on_accept(acceptable=['application/json', 'application/xml'])\n    def test_accept():\n        return data\n\n    @app.route('/format')\n    @rb.on_format()\n    def test_format():\n        return data\n\n\nFor every registered builder you can explicitly use them in two ways:\n\n.. code:: python\n\n    @app.route('/decorator')\n    @rb.response('json')\n    def test_decorator():\n        return data, 200, {'header': 'header'}\n\n    @_app.route('/csv')\n    def index_csv():\n        builder = rb.csv(filename='file.csv')\n        return builder((data, 200))\n\n\n.. _section-2:\n\nConfiguration\n^^^^^^^^^^^^^\n\n    1.  ``RB_DEFAULT_RESPONSE_FORMAT``: *(default: 'application/json')*\n    2.  ``RB_DEFAULT_ACCEPTABLE_MIMETYPES``: *(default: a list of all supported mimetypes)*\n    3.  ``RB_DEFAULT_ENCODE``: *(default: 'utf-8')*\n    4.  ``RB_DEFAULT_DUMP_INDENT``: *(default: None)*\n    5.  ``RB_FORMAT_KEY``: *(default: 'format')*\n    6.  ``RB_BASE64_ALTCHARS``: *(default: None)*\n    7.  ``RB_HTML_DEFAULT_TEMPLATE``: *(default: None)*\n    8.  ``RB_HTML_AS_TABLE``: *(default: True)*\n    9.  ``RB_YAML_ALLOW_UNICODE``: *(default: True)*\n    10. ``RB_CSV_DEFAULT_NAME``: *(default: 'filename')*\n    11. ``RB_CSV_DELIMITER``: *(default: ';')*\n    12. ``RB_CSV_QUOTING_CHAR``: *(default: '\"')*\n    13. ``RB_CSV_DIALECT``: *(default: 'excel-tab')*\n    14. ``RB_XML_CDATA``: *(default: False)*\n    15. ``RB_XML_ROOT``: *(default: 'ROOT')*\n    16. ``RB_FLATTEN_PREFIX``: *(default: '')*\n    17. ``RB_FLATTEN_SEPARATOR``: *(default: '_')*\n    18. ``RB_JSONP_PARAM``: *(default: 'callback')* if empty or None jsonp is disabled\n\nLicense MIT\n\n.. |download| image:: https://pypip.in/download/flask_responsebuilder/badge.png\n.. |version| image:: https://pypip.in/version/flask_responsebuilder/badge.png\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcs91chris%2Fflask_response_builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcs91chris%2Fflask_response_builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcs91chris%2Fflask_response_builder/lists"}