A Flask extension that forces extremely skinny controllers.
Project description
flask-skinny
A Flask extension that forces extremely skinny controllers.
@app.route("/dogs/<int:dog_id>", methods=["POST"])
@skinny.responses({200: responses.greet_dog, 400: responses.bad_request})
@skinny.intent(intents.greet_dog)
def greet_dog(dog_id):
pass
Description
This extension contains two decorators, @skinny.intent
and @skinny.responses
.
@skinny.intent(callable)
callable
: Receivesflask.request
, returnsstatus_code
andoutcome
.
@skinny.responses({status_code: callable, ...})
callable
: Receivesflask.request
andoutcome
, returnsheaders
andbody
.
@skinny.responses
will choose an appropriate response by status_code
.
Simple Usage
from flask import Flask
from flask_skinny import skinny
from random import randint
import json
def intent(request):
if randint(0, 1) == 0:
status_code = 200
outcome = "OK"
else:
status_code = 403
outcome = "Forbidden"
return status_code, outcome
def response(request, outcome):
headers = {"content-type": "application/json"}
body = json.dumps({"message": outcome}) + "\n"
return headers, body
app = Flask(__name__)
@app.route("/", methods=["GET"])
@skinny.responses({200: response, 403: response})
@skinny.intent(intent)
def index():
pass
Detailed Usage
See app.py.
Installation
$ pip install flask-skinny
Contribution
Create new Pull Request.
License
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
flask-skinny-0.1.2.tar.gz
(2.6 kB
view hashes)
Built Distribution
Close
Hashes for flask_skinny-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47be312ecdc2bae44e05d49d3656f70869689730bc23a807d6ad4e013293bf02 |
|
MD5 | e67c4522832c81f7f95fb01ed88374fa |
|
BLAKE2b-256 | bc763fc63b35a7ba3f9514261efcce1d478ae8e5f815818776a14f6ee5015d0f |