Sobes.tech
Назад к вопросам
Junior — Middle
43

Какой инструмент или подход ты применишь для разработки API-метода (endpoint)?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Ожидают услышать, что для разработки endpoint обычно выбирают веб-фреймворк и строят метод вокруг контракта, валидации и логики обработки. Для Python чаще всего называют FastAPI, Flask или Django REST Framework — в зависимости от проекта. Важно показать, что учитываются маршрутизация, схема входных данных, обработка ошибок, тестирование и документация.

Определение:

Endpoint — это конкретный URL-адрес и HTTP-метод, через которые клиент обращается к серверу для получения или изменения данных. Для его реализации в Python обычно используют веб-фреймворк, который берет на себя маршрутизацию запросов, парсинг параметров, валидацию и формирование ответа. Подход зависит от задачи: FastAPI удобен для типизированных API и автодокументации, Django REST Framework — для сложных CRUD-приложений, Flask — для более легковесных сервисов.

Пример использования:

Если нужно сделать endpoint для получения пользователя по ID, обычно выбирают фреймворк, объявляют маршрут, принимают параметр id, проверяют его, запрашивают данные из слоя сервиса или базы и возвращают JSON-ответ.

from fastapi import FastAPI, HTTPException

app = FastAPI()

fake_db = {
    1: {"id": 1, "name": "Alice"},
    2: {"id": 2, "name": "Bob"},
}

@app.get("/users/{user_id}")
def get_user(user_id: int):
    user = fake_db.get(user_id)
    if not user:
        raise HTTPException(status_code=404, detail="User not found")
    return user

Пояснение кода:

  • FastAPI() создаёт приложение.
  • Декоратор @app.get("/users/{user_id}") объявляет endpoint, который отвечает на GET-запросы.
  • user_id: int задаёт тип параметра и позволяет фреймворку валидировать входные данные.
  • Внутри функции ищется пользователь в условном хранилище fake_db.
  • Если запись не найдена, возвращается HTTP-ошибка 404.
  • Если пользователь найден, возвращается JSON-совместимый словарь.

Ключевые моменты:

  • Для endpoint важны не только маршрут и код обработки, но и контракт API: входные параметры, формат ответа, коды ошибок.
  • В Python для этого чаще всего применяют FastAPI, Flask или Django REST Framework.
  • Хороший подход — разделять роутинг, бизнес-логику и доступ к данным.
  • Обязательно предусматривать валидацию входных данных и обработку ошибок.
  • Для API полезны тесты и автодокументация, особенно в FastAPI и DRF.