Создание сервера
Устанавливаем фласк
pip install flask
Нужно создать файл app.py
с вот таким содержимым:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def main():
return "Hello world"
if __name__ == "__main__":
app.run()
Запускаем сервер
flask run
Увидим что то такое:
* Serving Flask app "test" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Переходим по url на последней строке. Можно через браузер либо postman.
Далее мы начнем создавать api нашего сервера.
Перед этим лучше прочитать прочитать про http
и restapi
, так как мы будем делать второе используя первое.
Для примера сделаем два метода нашего api
HTTP методы | Операция которая производится |
---|---|
GET | get_all |
POST | create |
PUT | update |
DELETE | delete |
Для методов POST и PUT дополнительный данные мы будем отправлять в поле body в виде json и отдавать ответ так же в нем.
from flask import Flask, jsonify, request
from database import DataBase # Наш класс базы данных
app = Flask(__name__)
accounts_db = DataBase('data/accounts')
@app.route('/api/accounts', methods=['GET'])
def get_accounts():
return jsonify({'accounts': accounts_db.get_all()})
@app.route('/api/accounts', methods=['POST'])
def create_account():
if not request.json:
abort(400)
for key in ('service', 'email', 'password'):
if key not in reques.json:
abort(400)
account = {
'service': request.json['service'],
'email': request.json['email'],
'password': request.json['password'],
}
# метод create возвращает аккаунт со всеми полями
# в их числе id и дата создания записи
account = accounts_db.create(account)
return jsonify({'account': account}), 201
if __name__ == '__main__':
app.run()
Для завершения создания простого апи нужно реализовать еще две функции для PUT и DELETE
Ниже представленна небольшая заготовка:
@app.route('/api/accounts/<int:id>', methods=['PUT'])
def update_account(id):
pass
@app.route('/api/accounts/<int:id>', methods=['DELETE'])
def delete_account(id):
pass
При запуске мы можем перейти на эти страницы через строку в браузере, но через Postman будет удобнее, так как мы сможем выбирать какой http метод мы будем использовать.