JSON API tools for Flask
Project description
Flask JsonTools
JSON API tools for Flask
Table of Contents
View Utilities
@jsonapi
JsonResponse
make_json_response()
FlaskJsonClient
View Utilities
@jsonapi
Decorate a view function that talks JSON.
Such function can return:
tuples of `(response, status[, headers]): to set custom status code and optionally - headers
Instances of `JsonResponse <#jsonresponse>`__
The result of helper function `make_json_response <#make_json_response>`__
Example:
from flask.ext.jsontools import jsonapi
@app.route('/users')
@jsonapi
def list_users():
return [
{'id': 1, 'login': 'kolypto'},
#...
]
@app.route('/user/<int:id>', methods=['DELETE'])
def delete_user(id):
return {'error': 'Access denied'}, 403
JsonResponse
Extends `flask.Request <http://flask.pocoo.org/docs/api/#incoming-request-data>`__ and encodes the response with JSON. Views decorated with `@jsonapi <#jsonapi>`__ return these objects.
Arguments:
response: response data
status: status code. Optional, defaults to 200
headers: additional headers dict. Optional.
**kwargs: additional argumets for `Response <http://flask.pocoo.org/docs/api/#response-objects>`__
Methods:
preprocess_response_data(response): Override to get custom response behavior.
get_json(): Get the original response data.
__getitem__(key): Get an item from the response data
The extra methods allows to reuse views:
from flask.ext.jsontools import jsonapi
@app.route('/user', methods=['GET'])
@jsonapi
def list_users():
return [ { 1: 'first', 2: 'second' } ]
@app.route('/user/<int:id>', methods=['GET'])
@jsonapi
def get_user(id):
return list_users().get_json()[id] # Long form
return list_users()[id] # Shortcut
make_json_response()
Helper function that actually preprocesses view return value into `JsonResponse <#jsonresponse>`__.
Accepts rv as any of:
tuple of (response, status[, headers])
Object to encode as JSON
FlaskJsonClient
FlaskJsonClient is a JSON-aware test client: it can post JSON and parse JSON responses into `JsonResponse <#jsonresponse>`__.
from myapplication import Application
from flask.ext.jsontools import FlaskJsonClient
def JsonTest(unittest.TestCase):
def setUp(self):
self.app = Application(__name__)
self.app.test_client_class = FlaskJsonClient
def testCreateUser(self):
with self.app.test_client() as c:
rv = c.post('/user/', json={'name': 'kolypto'})
# rv is JsonResponse
rv.status_code
rv.get_json()['user'] # Long form for the previous
rv['user'] # Shortcut for the previous
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for flask_jsontools-0.0.3-1.linux-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56a83d71a46330c587b4d8379deb4225880ceae6feb53bc57304a6872d24be3c |
|
MD5 | c2944d4553a28dcc1f518487ffd4e196 |
|
BLAKE2b-256 | 405042d17aa50321db64fcb1c8181e9eb5593d1e94c965fba45eb782782cba89 |