======
Madame is a dynamic RESTful API for MongoDB based on Flask.
:Author: Asdine El Hrychy
:Version: 0.1
Features
--------
- **REST-compliant**
- **HATEOAS**
- **Dynamic collections**
- **JSON Schemas separated from code**
- **JSON Validation**
- **Cache**
- **Versioning**
- **Read-only by default**
CRUD
----
Madame supports built-in CRUD operations.
======= ======
Action Method
======= ======
Create POST
Read GET
Update PATCH
Update* POST
Delete DELETE
======= ======
*Update method can use POST or PATCH, whether the user updates the entire document or not.
Schemas
-------
Madame keeps database schemas separated from code, and uses JSON to describe them.
To validate the data, it uses the strong schema validation library : `Validictory <https://github.com/sunlightlabs/validictory>`_. ::
{
"contacts": {
"title" : "Contacts",
"description" : "My contact list",
"schema" : {
"type" : "object",
"properties" : {
"firstname" : {
"type" : "string",
"minLength" : 1,
"maxLength" : 10
},
"lastname" : {
"type" : "string",
"minLength" : 1,
"maxLength" : 15,
"required" : true
},
"phone-number" : {
"type" : "string",
"format": "phone"
}
}
}
}
}
Dynamic
-------
You can add and delete new schemas without turning the servers off and use them immediatly. ::
>>> import requests, json
>>> data = {
"pets" :
{
"title": "Pets",
"description" : "My pets",
"schema" :
{
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"minLength" : 1,
"maxLength" : 15,
"required" : True
}
}
}
}
}
>>> headers = {'content-type': 'application/json'}
>>> r = requests.post('http://localhost:5000/', data=json.dumps(data), headers=headers)
>>> print r.status_code
201
You can then add new pets on your collection. ::
$ curl -i -d '{ "name" : "Betise" }' -H "Content-Type: application/json" http://localhost:5000/pets/
HTTP/1.0 201 CREATED
Content-Type: application/json
Content-Length: 263
ETag: "17c62e0fd3f85bf0f7db76fc2c90027f3309a83c"
Server: Werkzeug/0.8.3 Python/2.7.3
Date: Fri, 04 Jan 2013 15:36:00 GMT
{
"title": "Document created",
"links":
[
{
"methods": ["GET", "POST", "DELETE"],
"href": "http://localhost:5000/pets/",
"description": "You are here.",
"rel": "self",
"title": "Pets"
},
{
"href": "http://localhost:5000/pets/50e6f6e00ef3c414fcf66b45",
"rel": "item"
}
],
}
Filtering and sorting
---------------------
Madame uses MongoDB options for filtering and sorting. ::
$ curl http://localhost:5000/pets/?limit=1&skip=20
Installation
------------
::
$ pip install madame
Usage
-----
::
from madame import Madame
app = Madame()
app.run()
Versioning
----------
::
from madame import Madame
app = Madame('/v1')
app.run()
Flask and Ajax
--------------
Use Madame as an Ajax extension of your website.
As Madame is built on Flask, you can still use it as a normal website.
::
from madame import Madame
from flask import render_template
app = Madame('/ajax')
@app.route('/')
def index():
return render_template('index.html')
if __name__ == "__main__":
app.run()
Future
------
- Highly customizable
- Authentication
- Pagination
- ``GET /<collection>/<chosenIdentifier>``
and so on.
Feedback
--------
Any comment or advice would be highly appreciated!
Documentation
-------------
Complete documentation is available at `https://madame.readthedocs.org <https://madame.readthedocs.org>`_
License
-------
Madame is MIT licensed. See the `LICENSE <https://github.com/asdine/madame/blob/master/LICENSE>`_ for details.
Credits
-------
`Flask <http://flask.pocoo.org/>`_
`Pymongo <http://api.mongodb.org/python/current/>`_
`Validictory <https://github.com/sunlightlabs/validictory>`_
Authors
-------
Madame is developped by Asdine El Hrychy.
See the `AUTHORS <https://github.com/asdine/madame/blob/master/AUTHORS>`_ for details.
Metadata
Release files for madame 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| madame-0.1.2.tar.gz | 8.9 kB | Without provenance | Details for madame-0.1.2.tar.gz |
Release files / madame-0.1.2.tar.gz
| Download URL | madame-0.1.2.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4dbc41a41160119e84649cfec9eda8bc60be7b68e3f051f1f913af81f3ebb5af
|
|
BLAKE2b-256 checksum How to use checksums |
8a022c12a22790f095363a84b5d1d1c82a4157a3b721255120cb9d42ced3029d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for madame 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.