Build status Coverage Version status Documentation Status

Anyblok Pyramid Rest Api

The main idea is to provide facilities for building restful api that interacts with AnyBlok models through a CRUD like pattern.

As dependecy, it use Cornice for its validators and schema abilities and Marshmallow for schema definition, serialization and deserialization (we have since split this work to anyblok_marshmallow).

Features

  • Incoming request validation through schema (validation before database query and ability to validate several parts of the request object)
  • CRUD queries always with request.validated data
  • Data deserialization for response through schema
  • Easy CRUD resource declaration (map a model on an endpoint)
  • Automatic schema generation based on models introspection
  • Advanced collection filtering, ordering, paging (querystring validation through schema)

Todo

  • Helpers for JsonSchema or Swagger
  • Advanced introspection for api documentation generation

Request lifecyle

incoming request -> validators -> deserializer (json to dict) -> schema load -> request.validated

-> request.errors

request.validated -> crud -> resulting records -> deserializer (records to schema dump) -> serializer (default pyramid / cornice dict to json serializer) -> response

Author

Franck Bret franckbret@gmail.com https://github.com/franckbret

Credits