Как создать заглушку для REST API с помощью Flask
HTTP GET
По умолчанию Flask отвечает на GET.
Создадим файл
server.py
со следующим кодом
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello Flask!"
if __name__ == "__main__":
app.run()
Если Вы видите мануал без указания метода имейте в виду, что либо отвечать будет только на GET, либо автор изменил настройки по умолчанию.
Запустить файл server.py можно будет командой
python server.py
Но традиционно испльзуется flask run, про который я рассказываю в статье «Первый проект на Flask» .
Если в Вашем окружении установлен Flask то Вы увидите
* Serving Flask app "server" (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)
Можете открыть браузер и ввести в строку поиска http://127.0.0.1:5000/
На экране должно появиться
Hello Flask!
А в консоли должно появиться
127.0.0.1 - - [15/Jun/2020 16:19:06] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [15/Jun/2020 16:19:07] "GET /favicon.ico HTTP/1.1" 404 -
404 - так как я не добавил файл favicon.ico
Простой вебсервер на Flask
Создать такой элементарный сервер, который будет что-то отвечать на запросы бывает
полезно, когда Вам нужно быстро протестировать приложение, которое прежде
чем послать какую-то важную информацию запрашивает состояние сервера.
Вы можете ответить 200 и дальше слушать что присылает приложение.
from flask import request
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello world'
@app.route('/bestws')
def cakes():
return 'HeiHei.ru!'
@app.route('/heiheiru/holidays', methods = ['GET'])
def heiheiru_holidays():
timestamp = request.args.get('timestamp')
print(f"Кто-то сделал GET запрос на heihei.ru и передал время {timestamp}")
return '200'
@app.route('/heiheiru/fests', methods = ['GET','PUT', 'POST'])
def heiheiru_fests():
epc = request.args.get('epc')
print(epc)
antenna = request.args.get('antenna')
print(antenna)
timestamp = request.args.get('timestamp')
print(timestamp)
userMemory = request.args.get('userMemory')
print(userMemory)
return '200'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')