Backend
October 11, 2023

REST API для новичков: создание и тестирование

Что такое REST API?

REST - это способ организации взаимодействия между компьютерами через интернет. API - это интерфейс, с помощью которого программы могут общаться друг с другом.

Представь, что у тебя есть приложение на телефоне, например какая-нибудь игра. Это приложение хочет получить какие-то данные, например список друзей или фотографии. Для этого оно использует API социальной сети - отправляет запрос и получает нужную информацию.

Вот это взаимодействие между приложениями и есть REST API. Оно позволяет им обмениваться данными по интернету.

Зачем нужен REST API?

REST API нужен для того, чтобы разные программы и сервисы могли "разговаривать" друг с другом. Например, мобильное приложение и сервер. Или веб-сайт и база данных.

Без REST API каждому разработчику пришлось бы "изобретать велосипед" и писать свой собственный код для взаимодействия программ. А с REST это стандартизировано и упрощено.

Короче, REST API позволяет:

  • Разным системам общаться друг с другом
  • Обмениваться данными между клиентом и сервером
  • Создавать мобильные и веб приложения, используя сервисы компаний (Google, Facebook и т.д.)

Как это работает?

Чтобы лучше понять REST API, давай разберемся с основными принципами:

  1. Ресурсы (Resources)

Ресурс - это то, что мы хотим получить или отправить. Например, список пользователей, информация о пользователе, фотография. Каждый ресурс имеет уникальный URL-адрес для доступа к нему.

  1. Запросы (Requests)

Чтобы получить или изменить ресурсы, мы отправляем запросы. Существует несколько стандартных запросов:

  • GET - получить ресурс
  • POST - создать новый ресурс
  • PUT - обновить существующий ресурс
  • DELETE - удалить ресурс
  1. Ответы (Responses)

После каждого запроса сервер отправляет ответ. Ответ содержит код статуса (например, 200 OK или 404 Not Found) и данные. Данные обычно передаются в формате JSON.

Пример запроса:

GET https://api.example.com/users

Ответ:

200 OK
[
  { "id": 1, "name": "Bob" },
  { "id": 2, "name": "John" } 
]

Таким образом происходит обмен данными через REST API. Клиент отправляет запрос и получает данные в ответе.

Создание REST API

Допустим, ты решил написать мобильное приложение и хочешь в нем использовать данные с твоего сервера. Для этого нужно создать REST API.

Существуют разные фреймворки, которые помогают быстро написать API. Например, для Python это Flask и Django, для JavaScript - Express.js. Давай разберем пример с Flask.

Сначала импортируем Flask и создаем приложение:

from flask import Flask
app = Flask(__name__)

Теперь создадим эндпоинт для получения всех пользователей:

@app.route("/api/users")
def get_users():
  users = [
    {"id": 1, "name": "Bob"}, 
    {"id": 2, "name": "John"}
  ]
  return jsonify(users)

Запускаем сервер, отправляем GET запрос по адресу /api/users и получаем данные в формате JSON!

Работа с данными

Хранить данные для API можно в базах данных или просто в переменных/списках в памяти сервера.

Например, мы можем подключить БД SQLite и запрашивать оттуда данные:

import sqlite3 

@app.route("/api/users")
def get_users():
  conn = sqlite3.connect('database.db')
  cursor = conn.cursor()

  cursor.execute("SELECT * FROM users")  
  users = cursor.fetchall()

  return jsonify(users)

Вместо "ручного" написания запросов удобнее использовать ORM - объектно-реляционное отображение. Популярные ORM для Python - это SQLAlchemy и Peewee. Они позволяют работать с базой данных через классы и объекты Python.

Тестирование API

Прежде чем выкатывать API для реальных пользователей, важно протестировать, что оно работает корректно. Для этого существуют специальные инструменты.

Например, Postman позволяет очень удобно делать запросы к API и проверять ответы. Можно создать коллекцию тестов с разными запросами и данными.

В Python можно использовать библиотеку requests для автоматизированного тестирования:

import requests

response = requests.get("http://api.example.com/users")
assert response.status_code == 200

assert response.json()[0]["id"] == 123

Таким образом можно написать множество тестов для всех случаев использования API и убедиться, что оно работает корректно.

Оптимизация REST API

С ростом нагрузки нужно оптимизировать API, чтобы оно работало быстро и стабильно.

Например, можно:

  • Использовать кэширование - сохранять часто запрашиваемые данные в быстрой памяти
  • Реализовать очереди и многопоточность для обработки большого числа запросов
  • Перенести ресурсоемкие задачи на сервисы вроде очередей задач (Celery) или облачных функций (AWS Lambda)

Также важно позаботиться о безопасности - использовать HTTPS, токены авторизации, ограничивать количество запросов с одного IP и т.д.

Итог

В общем, REST API - это очень полезная и мощная технология для современных приложений. Она решает задачу взаимодействия между разными системами и сервисами через HTTP протокол.

Если тебе интересна веб-разработка - обязательно изучи REST API, попрактикуйся создавать свои API сервисы. Это отличный навык, который пригодится в реальных проектах!