Makes RESTful CRUD easier
Project description
Makes RESTful CRUD easier.
Test status
Quick start for contributing
virtualenv -p `which python3` virtualenv source virtualenv/bin/activate pip install -r requirements.txt pip install -r dev_requirements.txt nosetests
This runs the tests with SQLite. To run the tests with Postgres (using pg8000), you must have a Postgres server running, and a postgres user with permission to create databases:
export AUTOCRUD_DSN=postgresql+pg8000://myuser:mypassword@localhost:5432 nosetests
Usage
Declare your SQLAlchemy models:
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, Integer, String Base = declarative_base() class Employee(Base): __tablename__ = 'employees' id = Column(Integer, primary_key=True) name = Column(String(50)) age = Column(Integer)
Declare your resources:
from falcon_autocrud.resource import CollectionResource, SingleResource class EmployeeCollectionResource(CollectionResource): model = Employee class EmployeeResource(SingleResource): model = Employee
Apply them to your app, ensuring you pass an SQLAlchemy session to the resource classes:
from sqlalchemy.orm.session import sessionmaker from sqlalchemy import create_engine import falcon import falconjsonio.middleware Session = sessionmaker() db_engine = create_engine('sqlite:///stuff.db') db_session = Session(bind=db_engine) app = falcon.API( middleware=[ falconjsonio.middleware.RequireJSON(), falconjsonio.middleware.JSONTranslator(), ], ) app.add_route('/employees', EmployeeCollectionResource(db_session)) app.add_route('/employees/{id}', EmployeeResource(db_session))
This automatically creates RESTful endpoints for your resources:
http GET http://localhost/employees http GET http://localhost/employees?name=Bob http GET http://localhost/employees?age__gt=24 http GET http://localhost/employees?age__gte=25 http GET http://localhost/employees?age__lt=25 http GET http://localhost/employees?age__lte=24 http GET http://localhost/employees?name__contains=John http GET http://localhost/employees?name__startswith=John http GET http://localhost/employees?company_id__null=1 http GET http://localhost/employees?company_id__null=0 echo '{"name": "Jim"}' | http POST http://localhost/employees http GET http://localhost/employees/100 echo '{"name": "Jim"}' | http PUT http://localhost/employees/100 echo '{"name": "Jim"}' | http PATCH http://localhost/employees/100 http DELETE http://localhost/employees/100 # PATCHing a collection to add entities in bulk echo '{"patches": [{"op": "add", "path": "/", "value": {"name": "Jim"}}]}' | http PATCH http://localhost/employees
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file falcon-autocrud-0.0.21.tar.gz
.
File metadata
- Download URL: falcon-autocrud-0.0.21.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f2150ddc06d7b854a0a16535847665902039d32f7628db38e28f5a5ccfbc83c |
|
MD5 | c145ded8a4ffa149fe1ab71241c8a360 |
|
BLAKE2b-256 | 98815c7f989fdc1e733fca9f96a3edad91d6d3ddd750fd209fad205ad51200d6 |