pip install flask-restly
By default flask-restly
uses JSON serializer.
from flask import Flask
from flask_restly import FlaskRestly
from flask_restly.decorator import resource, get, delete
app = Flask(__name__)
rest = FlaskRestly(app)
rest.init_app(app)
@resource(name='employees')
class EmployeesResource:
@get('/<id>')
def get_employee(self, id):
return dict(id=int(id))
@get('/')
def get_employees(self):
return dict(entites=[
dict(id=1),
dict(id=2)
])
@delete('/<id>')
def delete_employee(self, **kwargs):
return
with app.app_context():
EmployeesResource()
if __name__ == "__main__":
app.run(host='127.0.0.1', port=5001, debug=True)
$ python main.py
* Serving Flask app "main" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 210-167-642
* Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)
- Decorators-based routing
- JSON and Protobuf built-in serialization
- Custom serializer support
- Authorization and authentication decorators
- Automatic REST-like response codes
- API versioning
- Rating limits
- HATEOAS/HAL
Please see examples for more details.
Name | Default value |
---|---|
RESTLY_SERIALIZER: <flask_restly.serializer.SerializerBase> |
flask_restly.serializer.json |
RESTLY_API_PREFIX: <str> |
/api/rest |
RESTLY_PROTOBUF_MIMETYPE: <str> |
application/x-protobuf |
RESTLY_RATE_LIMIT_REQUESTS_AMOUNT: <int> |
100 |
RESTLY_RATE_LIMIT_WINDOW_SECONDS: <int> |
60 |