Можешь описать основные характеристики RESTful API и что отличает его от других подходов?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
RESTful API — это архитектурный стиль для построения веб-сервисов вокруг ресурсов, доступ к которым идет через стандартные HTTP-методы. Важно показать понимание stateless-подхода, единого интерфейса и использования URL как адресов ресурсов. Также обычно ожидают, что будет названо отличие от более “сильно связных” или RPC-подходов.
Определение:
RESTful API — это API, которое следует принципам REST: каждый ресурс имеет свой URL, операции над ресурсами выражаются стандартными HTTP-методами, а сервер не хранит состояние сессии между запросами. Обычно используются GET для чтения, POST для создания, PUT/PATCH для изменения и DELETE для удаления.
Ключевая идея REST — не “вызов методов”, а работа с ресурсами через унифицированный интерфейс HTTP. Это делает API проще, предсказуемее и удобнее для масштабирования.
Пример использования:
Допустим, есть сервис управления пользователями:
GET /users— получить список пользователейGET /users/42— получить пользователя с id 42POST /users— создать нового пользователяPATCH /users/42— частично обновить пользователяDELETE /users/42— удалить пользователя
Пример на Python с Flask:
from flask import Flask, jsonify, request
app = Flask(__name__)
users = [{"id": 1, "name": "Alice"}]
@app.get("/users")
def get_users():
return jsonify(users)
@app.get("/users/<int:user_id>")
def get_user(user_id):
user = next((u for u in users if u["id"] == user_id), None)
if user is None:
return jsonify({"error": "Not found"}), 404
return jsonify(user)
@app.post("/users")
def create_user():
data = request.get_json()
new_user = {"id": len(users) + 1, "name": data["name"]}
users.append(new_user)
return jsonify(new_user), 201
Пояснение кода:
GET /usersвозвращает коллекцию ресурсовusers.GET /users/<id>обращается к конкретному ресурсу по идентификатору.POST /usersсоздает новый ресурс и возвращает его с кодом201 Created.- Данные передаются через HTTP и JSON, а сервер не хранит отдельную “сессию” для понимания запроса.
- Логика маршрутов отражает REST-подход: URL описывает ресурс, а метод HTTP — действие над ним.
Ключевые моменты:
- REST строится вокруг ресурсов, а не вокруг удаленных процедур.
- Используются стандартные HTTP-методы и семантика кодов ответов.
- Каждый запрос должен быть stateless: сервер не зависит от контекста предыдущих запросов.
- URL обычно описывает сущность, а не действие:
/users/42, а не/getUser. - REST отличается от RPC тем, что в RPC акцент на вызове функций, а в REST — на манипуляции ресурсами.
- RESTful API обычно проще документировать, тестировать и масштабировать за счет единообразного интерфейса.