Skip to content

Instantly share code, notes, and snippets.

@jcfrank
Last active August 29, 2015 14:13
Show Gist options
  • Save jcfrank/391e2e53dd2785a7629e to your computer and use it in GitHub Desktop.
Save jcfrank/391e2e53dd2785a7629e to your computer and use it in GitHub Desktop.
A flask restful api server sample.

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.

requirements:

flask
flask-restful

api.py

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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment