· 6 years ago · Nov 06, 2019, 12:50 PM
1"""
2Auuthor: YA
3Project: REST_API
4Date: 06.11.2019
5Company: GOFASSt
6"""
7# curlable
8# curl http://127.0.0.1:5000/kares
9
10# webova sluzba ( rest api cez http )
11# evolucia client/server applikacii
12# producer -- app ktora vystavuje data
13# budeme pouzivat POST
14# curl alebo browser, ako i si napiseme klienta
15
16# pip install flask-restful
17# da sa naistallit cez python console !
18# kaslat pip z cmd
19from itertools import chain
20
21from flask import Flask, request, jsonify
22from flask_restful import Api, Resource
23from MySQLdb import connect
24
25app = Flask(__name__) # vytvaraju webovy kontajner, pouzitim Flask framework, alebo existuje este django
26api = Api(app)
27
28
29class Hello(Resource):
30 def get(self):
31 data = {'alfa': 1, 'beta': 9, 'gama': 3}
32 return jsonify(data)
33
34
35"""
36class Fero(Resource):
37 # Resource je trieda ktora definuje koncove connection points
38 def get(self):
39 data = ('Fero je kar')
40 return data
41"""
42
43
44class DB_JDBC(Resource):
45 def __init__(self, *args, **kwargs):
46 self.host = kwargs['host']
47 self.user = kwargs['user']
48 self.password = kwargs['passwd']
49 self.db = kwargs['db']
50 self.conn = connect(host=self.host,
51 user=self.user,
52 password=self.password,
53 database=self.db)
54 self.cursor = self.conn.cursor()
55
56 def __del__(self):
57 self.conn.close()
58
59 def get(self, db=None):
60 if not db:
61 sql = """show schemas"""
62 key = "schemas"
63 else:
64 sql = """show tables from {}""".format(db)
65 key = "tables"
66 try:
67 self.cursor.execute(sql)
68 self.result = self.cursor.fetchall()
69 except Exception as e:
70 print("Chyba! : ", e)
71 self.conn.rollback()
72 self.result = -2
73 self.data = {}
74 self.data[key] = list(chain(*self.result))
75 return jsonify(self.data)
76
77
78db = {'host': '10.202.20.122',
79 'user': 'root',
80 'passwd': 'root',
81 'db': 'ondro'}
82
83api.add_resource(Hello, '/hi')
84#api.add_resource(DB_JDBC, "/db", resource_class_kwargs=db)
85
86# mozeme potrebovat 2 veci
87api.add_resource(DB_JDBC, "/db", "/db/<string:db>", resource_class_kwargs=db)
88
89
90if __name__ == '__main__':
91 app.run()