REST (Representational State Transfer) — это архитектурный стиль, который используется для проектирования веб-сервисов. REST API (Application Programming Interface) — интерфейс, работающий по принципам REST, позволяющий взаимодействовать с удаленными сервисами через HTTP.
Основные принципы REST
REST основывается на нескольких ключевых принципах:
- Клиент-серверная архитектура — клиент и сервер разделены, что позволяет изменять их независимо.
- Отсутствие состояния (stateless) — каждый запрос от клиента должен содержать всю необходимую информацию, сервер не хранит состояние клиента между запросами.
- Кеширование — сервер может указывать, какие ответы можно кэшировать, что снижает нагрузку.
- Единообразие интерфейса — использование стандартных методов HTTP (GET, POST, PUT, DELETE) и ресурсов, идентифицируемых через URL.
- Многоуровневая система — REST API может использовать прокси-серверы, балансировщики нагрузки и другие уровни для повышения масштабируемости.
HTTP-методы в REST API
В REST API используются стандартные методы HTTP:
- GET — получение данных
- POST — создание ресурса
- PUT — обновление ресурса
- DELETE — удаление ресурса
Пример запроса на получение данных:
GET /api/products/1 HTTP/1.1
Host: example.com
Пример REST API на C#
Создание REST API с использованием ASP.NET Core:
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/products")]
public class ProductsController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
var product = new { Id = id, Name = "Продукт" };
return Ok(product);
}
}
Этот контроллер предоставляет метод GET /api/products/{id}
, который возвращает данные о продукте в формате JSON.
Форматы данных в REST API
Чаще всего REST API использует JSON или XML для передачи данных. JSON является более популярным из-за компактности и удобства работы.
Пример ответа в формате JSON:
{
"id": 1,
"name": "Продукт"
}
Аутентификация и безопасность
Для защиты REST API применяются:
- JWT (JSON Web Token) — токены, используемые для аутентификации.
- OAuth 2.0 — стандарт для авторизации API.
- API-ключи — уникальные ключи, предоставляющие доступ к API.
- HTTPS — шифрование передаваемых данных.