/anyblok-pyramid-rest-api

Build restful api that interacts with AnyBlok models through a CRUD like pattern

Primary LanguagePythonMozilla Public License 2.0MPL-2.0

Python versions

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

Contributors

Jean-Sébastien Suzanne

Credits

License

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file,You can obtain one at http://mozilla.org/MPL/2.0/.

Copyright (c) 2017, Franck Bret