Lightweight web framework (wink, wink) for building APIs and backends. Reasonably fast in execution, quite fast for development. If you need gazillions of requests served by single process in a second then there are better options than Kristall. I'm happy when it's not slower than Flask.
Some frameworks suck here, others suck there and none is good at all things I want. I decided to build a WSGI application tool that's based on Werkzeug and is simpler than Flask. Sure, there are Flask extensions that make writing REST APIs simpler like Flask-RESTFul and Flask-RESTX but they are built on top of Flask and do many extra things that are better done by others, or not done at all. I wanted something that is somewhere in between Falcon and Flask. Simplicity of Falcon with convenience of Flask.
But since not everything sucks in Falcon I'd grab some ideas, like resourceful routing without need to subclass specific Resource
base class, or only static route registration.
- resourceful routing
- static route registration
- only JSON content type supported
- very limited automatic coercion to JSON
That's it for now.
Future developments:
- CORS support (possibly based on my another project: CORSLib)
- no decorator-based route registration - there's only one way to register routes and it is explicit
- no built-in support for any other content type than
application/json
on both input and output - no fancy JSON de/encoding, only builtin
json
module is used in default JSON handling - use serialisation library eg. Marshmallow or Colander if you need anything beyond that; default behaviour may be customised to some degree by providing JSON decoder and encoder classes
Really very thin wrapper over Werkzeug utility functions and classes. Seriously, I'm not calling this a framework. Not yet. It consists of Application
class that's and entry point to runtime and Request
/Response
objects that in fact are Werkzeug's built in wrappers reconfigured to support only JSON as transport media with some convenience methods.
- Python 3.7
- Werkzeug 0.16
These are minimal versions of requirements.