Python Flask REST API: Разработка веб-сервисов

REST API — архитектурный стиль для создания веб-сервисов. Он позволяет разделять клиентскую (frontend) и серверную (backend) части приложения, используя HTTP-протокол для взаимодействия. Клиентская сторона (например, веб-сайт или мобильное приложение) взаимодействует с серверной частью, отправляя HTTP-запросы (GET, POST, PUT, DELETE) по определённым URL-адресам. Серверная часть обрабатывает запросы, взаимодействует с базой данных (при необходимости) и возвращает результаты в формате JSON. Этот подход обеспечивает гибкость, масштабируемость и независимость frontend и backend разработки.

Пример: для получения всех статей из базы данных на сайте naitiprager.com создаётся API-endpoint, например, /api/articles. Серверный код (на Python, Java, C#, PHP или другом языке) обращается к базе данных, выбирает статьи и возвращает их в формате JSON. Клиентская часть обращается к этому URL-адресу и получает данные, легко обрабатываемые любой frontend-технологией (JavaScript, Vue.js, React и т.д.). Для получения конкретной статьи используется URL вида /api/articles/1, где 1 — уникальный идентификатор статьи. Различные HTTP-методы используются для разных действий: GET — получение данных, POST — создание записи, PUT — обновление записи, DELETE — удаление записи.

Разница между REST и RESTful: приложение, реализующее только один URL для выборки данных, называется REST-like. RESTful приложение реализует все серверные функции через REST API.

Начало работы: установка и настройка

Для разработки проекта необходимы:

  1. Python: Последняя версия, установленная с официального сайта.
  2. IDE: Например, PyCharm.
  3. Библиотеки: Устанавливаются с помощью pip:
    pip install Flask
    pip install flask-restful

    (При проблемах попробуйте pip3 вместо pip).

  4. Библиотека requests: Для клиентской части:
    pip install requests

Создание проекта

Создаются файлы main.py (серверная часть) и local.py (клиентская часть). В реальных проектах серверная и клиентская части могут быть разработаны с использованием разных технологий, но для простоты мы используем Flask для обеих частей.

local.py (клиентская часть)

Отправка запросов к серверу и вывод данных в консоль:

import requests
import json

response = requests.get('http://127.0.0.1:3000/api/main')
print(json.dumps(response.json(), indent=4))

main.py (серверная часть)

Создание REST API с помощью Flask и Flask-RESTful:

from flask import Flask, request
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

courses = {
    1: {'name': 'Python', 'videos': 13},
    2: {'name': 'Java', 'videos': 10}
}

class Main(Resource):
    def get(self, course_id=None):
        if course_id == 0:
            return courses
        elif course_id:
            return courses[course_id]

    def post(self, course_id):
        parser = request.get_json()
        courses[course_id] = parser
        return courses

    def put(self, course_id):
        parser = request.get_json()
        courses[course_id] = parser
        return courses

    def delete(self, course_id):
        del courses[course_id]
        return courses

api.add_resource(Main, '/api/main', '/api/main/<int:course_id>')

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

Запустите main.py и local.py в отдельных терминалах. local.py будет выводить JSON-ответ от main.py. Измените код local.py для отправки POST, PUT и DELETE запросов, чтобы протестировать остальные методы.

Статья рассмотрела основы создания простого RESTful приложения на Python с использованием Flask и Flask-RESTful. Пример демонстрирует базовые принципы работы с REST API, включая обработку GET, POST, PUT и DELETE запросов. В реальных проектах используются базы данных и более сложная логика, но базовые принципы остаются теми же. Разделение frontend и backend, использование стандартизированных HTTP-методов и формат JSON для обмена данными — ключевые аспекты RESTful архитектуры.

Что будем искать? Например,программа