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)