Skip to content

Latest commit

History

57 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mimerender

mimerender is a Python module for RESTful resource variant selection using the HTTP Accept header

It acts as a decorator that wraps a HTTP request handler to select the correct render function for a given HTTP Accept header. It uses mimeparse to parse the accept string and select the best available representation.

Support for webapp2 (Google App Engine), web.py, Flask and Bottle is available out of the box and it's easy to add support for your favourite framework, just extend the MimeRenderBase class.

Build status at Travis CI: Build Status

You can read the full documentation at rtfd.org.

Example (Flask):

fromflaskimportFlaskimportjsonimportmimerendermimerender=mimerender.FlaskMimeRender()
render_xml=lambdamessage: '<message>%s</message>'%messagerender_json=lambda**args: json.dumps(args)
render_html=lambdamessage: '<html><body>%s</body></html>'%messagerender_txt=lambdamessage: messageapp=Flask(__name__)
@app.route('/')@app.route('/<name>')@mimerender(default='html',html=render_html,xml=render_xml,json=render_json,txt=render_txt)defgreet(name='world'):
return {'message': 'Hello, '+name+'!'}
if__name__=="__main__":
app.run(port=8080)

Then you can do:

$ curl -i -H "Accept: application/html" localhost:8080/x
$ curl -i -H "Accept: application/xml" localhost:8080/x
$ curl -i -H "Accept: application/json" localhost:8080/x
$ curl -i -H "Accept: text/plain" localhost:8080/x

and get results that make sense.

In the examples directory you will find examples for all the other supported frameworks.

How to get it

mimerender is in PyPI, so it's as easy as doing:

$ pip install mimerender

About

Python module for RESTful resource variant selection using the HTTP Accept header

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors