flask-restglue

Flask-RestGlue integrates Flask, MongoDB, OpenAPI in a simple and elegant way


Keywords
flask, flask-restglue, mongoengine, openapi, openapi3, rest
License
MIT
Install
pip install flask-restglue==0.0.4

Documentation

Flask-RestGlue(ALPHA)

Integrates Flask + MongoDB + OpenAPI in a simple and elegant way!
Explore the docs »

View Demo · Report Bug · Request Feature

Stars Badge Pull Requests Badge Issues Badge

Python Version Version Dependencies Status Security: bandit Pre-commit License

Contents

Table of Contents
  1. Example
  2. Quick Start
  3. References

Example

For a fullstack boilerplate, visit https://github.com/abassel/Flask_RestGlue_Svelte_Docker

import mongoengine as mongo
from flask_rest_glue import FlaskRestGlue

mongo.connect("pyglue", host='localhost:27017')

api = FlaskRestGlue()


@api.rest_model()
class User(mongo.Document):
  # id = mongo.StringField(primary_key=True)
  email = mongo.StringField(primary_key=True)
  password = mongo.StringField()


api.run()

Go to http://127.0.0.1:5000/spec_doc or http://127.0.0.1:5000/spec_rdoc to see the documentation bellow:

Swagger UI

ReText UI

Expected output:

curl -v -d '{"email":"a@b.com","password":"xyz"}' \
     -H "Content-Type: application/json" http://localhost:5000/user

#< HTTP/1.0 200 OK
#< Content-Type: application/json
#< Content-Length: 45
#<
#{
#  "_id": "a@b.com",
#  "password": "xyz"
#}


curl -v http://localhost:5000/users
#< HTTP/1.0 200 OK
#< Content-Type: application/json
#< Content-Length: 57
#<
#[
#  {
#    "_id": "a@b.com",
#    "password": "xyz"
#  }
#]


curl -v http://localhost:5000/user/a@b.com
#< HTTP/1.0 200 OK
#< Content-Type: application/json
#< Content-Length: 45
#<
#{
#  "_id": "a@b.com",
#  "password": "xyz"
#}


curl -v -X PUT -d '{"password":"new_pass"}' \
     -H "Content-Type: application/json" http://localhost:5000/user/a@b.com
#< HTTP/1.0 200 OK
#< Content-Type: application/json
#< Content-Length: 50
#<
#{
#  "_id": "a@b.com",
#  "password": "new_pass"
#}


curl -v -X DELETE http://localhost:5000/user/a@b.com
#< HTTP/1.0 200 OK
#< Content-Type: application/json
#< Content-Length: 45
#<
#{
#  "_id": "a@b.com",
#  "password": "xyz"
#}

Quick Start

Requires docker and python 3.9

1 - install local MongoDB

mkdir -p ~/mongodata

docker run -d --rm -p 27017:27017 -v ~/mongodata:/data/db --name mongodb mongo

2 - Install this library

pip install Flask-RestGlue

3 - Pull the code

curl -s -O -L  https://github.com/abassel/Flask-RestGlue/blob/master/example/tut01_hello_world.py
curl -s -O -L  https://github.com/abassel/Flask-RestGlue/blob/master/example/tut01_hello_world.sh

4 - Run the code

python tut01_hello_world.py

In another terminal window

bash tut01_hello_world.sh

References 📓