Вопрос проверяет понимание REST как архитектурного стиля для распределенных систем, а не просто набора правил, и нужен для оценки способности проектировать интерфейсы взаимодействия между клиентом и сервером.
REST (Representational State Transfer) — это архитектурный стиль, а не протокол или стандарт. Он описывает набор ограничений для построения распределенных систем, где клиенты взаимодействуют с серверами через стандартные HTTP-методы, обращаясь к ресурсам, представленным в виде уникальных URI.
REST API широко используется в веб-разработке и мобильных приложениях для обмена данными между фронтендом и бэкендом. Например, интернет-магазин может предоставлять API для получения списка товаров, создания заказа или обновления профиля пользователя.
Рассмотрим простой REST API для управления списком задач (To-Do). Ресурс — задача, доступная по URI /tasks.
// Пример на Node.js с Express
const express = require('express');
const app = express();
app.use(express.json());
let tasks = [{ id: 1, title: "Изучить REST", done: false }];
// GET /tasks — получить все задачи
app.get('/tasks', (req, res) => {
res.json(tasks);
});
// POST /tasks — создать новую задачу
app.post('/tasks', (req, res) => {
const newTask = { id: tasks.length + 1, ...req.body };
tasks.push(newTask);
res.status(201).json(newTask);
});
// PUT /tasks/:id — обновить задачу
app.put('/tasks/:id', (req, res) => {
const id = parseInt(req.params.id);
const taskIndex = tasks.findIndex(t => t.id === id);
if (taskIndex === -1) return res.status(404).send('Задача не найдена');
tasks[taskIndex] = { ...tasks[taskIndex], ...req.body };
res.json(tasks[taskIndex]);
});
// DELETE /tasks/:id — удалить задачу
app.delete('/tasks/:id', (req, res) => {
tasks = tasks.filter(t => t.id !== parseInt(req.params.id));
res.status(204).send();
});
app.listen(3000, () => console.log('Сервер запущен на порту 3000'));В этом примере видно, как HTTP-методы соответствуют операциям CRUD (Create, Read, Update, Delete) над ресурсом "задача".
REST API стоит применять, когда нужен простой, стандартизированный и масштабируемый способ взаимодействия между различными системами, особенно в веб- и мобильной разработке. Он идеален для сценариев, где важны независимость клиента от сервера и возможность кэширования.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на iOS Developer в телеграм