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.
Начало работы: установка и настройка
Для разработки проекта необходимы:
- Python: Последняя версия, установленная с официального сайта.
- IDE: Например, PyCharm.
- Библиотеки: Устанавливаются с помощью pip:
pip install Flask pip install flask-restful
(При проблемах попробуйте pip3 вместо pip).
- Библиотека 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 архитектуры.