Snippets

Yuri Zhylyuk flask-rest-sample

Created by Yuri Zhylyuk
from flask import Flask, jsonify, request, make_response
from pandas import read_sql
app = Flask(__name__)

api_ver = "0.01"
api_secret = "secret-secret-key"


def db_eng(host="as010wp.ccubed.local", schema="navision", user_var="USER", pass_var="PASS"):
    import os, pymssql
    from sqlalchemy import create_engine
    con_str = "mssql+pymssql://{user}:{passwd}@{host}:1433/{schema}".format(user=os.environ[user_var], 
        passwd=os.environ[pass_var], host=host, schema=schema)
    try:
        return create_engine(con_str, encoding="utf-8")
    except Exception as e:
        return "problem connecting to {}: {}".format(host, str(e))


@app.route('/obj/<id>', methods=["POST"])
def get_obj(id):
    api_key = request.headers.get('Authorization', '')
    try:
        if api_key == api_secret:
            db = db_eng()
            obj_sql = """
                        select ID, Name, Modified, Compiled, Date, [Version List] as VersionList 
                        from Object 
                        where ID = {id}
                      """
            df = read_sql(obj_sql.format(id=id), con=nav)
            db.dispose()
            data = df.to_dict(orient="records")
            return jsonify(data=data, ver=api_ver)
        else:
            return make_response("Not Authorized", 401)
    except:
        return make_response("Internal Error", 500)


@app.route('/ver/<id>')
def get_ver(id):
    return jsonify(ver=api_ver)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8009, debug=True)

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.