Здравствуйте. Я реализую Flask API с аутентификацией, как я могу использовать apiKey для реализации там для использования в запросе, а также, если я хочу передать параметры записи, как мне это сделать?
Вот то, что я пробовал:
app = Flask(__name__)
pymysql_connect_kwargs = {'user': 'root',
'password': 'XXX',
'host': '10.10.10.XX',
'db' : 'bbhskl',
'charset': 'utf8mb4'}
app.config['pymysql_kwargs'] = pymysql_connect_kwargs
mysql = MySQL(app)
#api = Api(app, authorizations=authorizations)
limiter = Limiter(app, key_func=get_remote_address)
limiter.init_app(app)
api = swagger.docs(Api(app), apiVersion='0.1', api_spec_url='/doc', description = 'Order API')
Swagger(app)
auth = HTTPTokenAuth(scheme='Token')
tokens = {
'awserftggyjkk34)ghtyrjrhhye34nnmw': 'cadmin',
'bwsosjhee(dhj345gtyuioplsertbsjkl': 'dadmin',
'mnchthas(sjklertyusvfgmbshdls234h': 'eadmin'
}
@auth.verify_token
def verify_token(token):
if token in tokens:
g.current_user = tokens[token]
return True
return False
class currentuser(Resource):
decorators = [limiter.limit("5000/day")]
@swagger.model
@swagger.operation(notes='provide api key')
@auth.login_required
def get(self):
return "Hello, %s!" % g.current_user
api.add_resource(currentuser, '/user')
class baseorder(Resource):
decorators = [limiter.limit("133/day")]
@swagger.model
@swagger.operation(notes='provide apikey')
@auth.login_required
def get(self):
sql = "select order_id, order_name from active_orders"
cur = mysql.connection.cursor()
cur.execute(sql)
row_headers=[x[0] for x in cur.description]
rows=cur.fetchall()
json_data=[]
for result in rows:
json_data.append(dict(zip(row_headers,result)))
return jsonify(json_data)
api.add_resource(baseorder, '/api/v1/data')
class order(Resource):
decorators = [limiter.limit("5000/day")]
@swagger.model
@swagger.operation(notes='Pass the order id')
@auth.login_required
def post(self):
return id
api.add_resource(order, '/api/v1/order<id>')
if __name__ == '__main__':
app.run(debug=True)
Это работает и возвращает Swagger UI на localhost:5000/doc.html
, но авторизация не работает и запрос на публикацию не работает. Кроме того, если я хочу обновить версию пользовательского интерфейса и изменить способ ее выполнения.
Любая помощь по этому вопросу была бы полезной.