Skip to content

Instantly share code, notes, and snippets.

@jcfrank
Last active August 29, 2015 14:13

Revisions

  1. jcfrank revised this gist Jan 11, 2015. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions flask-sample.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,6 @@
    Simple Flask app
    ================

    This snippet is from an API server of another open source project.
    It was written to work with webpy, but I change it to use Flask.

  2. jcfrank created this gist Jan 9, 2015.
    71 changes: 71 additions & 0 deletions flask-sample.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    This snippet is from an API server of another open source project.
    It was written to work with webpy, but I change it to use Flask.

    requirements:
    ```
    flask
    flask-restful
    ```

    api.py
    ```python
    import fp
    import inside_server_operation
    from flask import Flask, abort
    from flask.ext.restful import Api, Resource, reqparse


    app = Flask(__name__)
    api = Api(app)

    class Query(Resource):
    def __init__(self):
    self.parser = reqparse.RequestParser()
    self.parser.add_argument('some_query', type=str)

    def get(self):
    args = self.parser.parse_args()
    some_query = args["some_query"]
    return {
    "ok": True,
    "some_query": some_query
    }

    def post(self):
    return self.get()

    class Ingest(Resource):
    def __init__(self):
    self.parser = reqparse.RequestParser()
    self.parser.add_argument('track_id', type=str, default="default")
    # define query string parameters ...
    self.parser.add_argument('length', default=None)
    self.parser.add_argument('codever', default=None)

    def post(self):
    args = self.parser.parse_args()
    track_id = args["track_id"]
    artist = args["artist"]
    # parse query string parameters ...
    release = args["release"]
    track = args["track"]
    if not length or not codever:
    abort(400)

    """
    some handler code.
    """

    return {
    "track_id": track_id,
    "status": "ok"
    }

    # Routing
    api.add_resource(Query, '/query')
    api.add_resource(Ingest, '/ingest')

    if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)
    ```