Other libraries =============== The following other Flask extensions are avaible for REST-functionality, they have been considered before creating this extension: * `Flask-Restless `_, does solve a slightly different problem, with fairly tight coupling. * `Flask-REST `_. Best name, no longer under development (at the time of this writing, hasn't been for two years). Usage seems fairly clumsy with a lot of classes being thrown around. * `Flask-Restful `_ seems to be the best of the bunch and in active development with many contributors. Lots of docs and apparently production usage/testing. So why not use Flask-Restful? The following points describe what Flask-arrest tries to do better than Flask-Restful: * Being Flask-y. Using classes instead of decorated function for routes looks fairly alien in a Flask application, yet all other extensions seem to want to force this for the obvious OO-abstraction. Flask-arrest uses routes, view, the ``methods`` parameter. This means no new code and no new idioms (e.g. url_for just works), everything instantly recognizable by experienced (and novice) Flask-developers. * Using Blueprints. Should be a part of "being Flask-y" (see above), but is important enough to warrant its own mention. Again, saves code, makes stuff recognizable instantly and uses well-known Flask idioms. Also allows easily putting the API endpoints onto the app with any prefix. In addition, it should be possible to easily implement the three levels of REST- Apis. All the mentioned REST-extensions seem to go up only to level 2, stopping short of Hypermedia Controls (HATEOAS); at the very least they are not including them in examples. Another missing feature ("missing" not meaning impossible-to- do, but not a first-class feature) seems to be *content- negotiation*, especially if unconventional or vendor-specific content-types are desired.