Какие эндпоинты нужны для API
Что проверяют
Умеете ли вы превратить расплывчатое требование в набор ресурсов и операций, а не перечислить пять CRUD-ручек по памяти. Хороший знак, если вы начинаете с вопросов о предметной области. Следом обычно просят показать пагинацию, коды ответов или то, как оформить действие, которое не ложится в CRUD.
Как отвечать
Сначала уточните: кто клиенты API, какие сущности и сценарии, нужна ли авторизация, какие объёмы. Затем стройте от ресурсов: в пути существительные во множественном числе, действие задаёт HTTP-метод.
- коллекция и элемент:
GET /ordersотдаёт список,POST /ordersсоздаёт и отвечает201с заголовкомLocation,GET /orders/{id}возвращает объект или404; - изменение и удаление:
PUTзаменяет ресурс целиком,PATCHменяет часть полей,DELETEотвечает204; - вложенность:
GET /users/{id}/orders, если заказ без пользователя не имеет смысла. Глубже одного уровня лучше не уходить; - списки: пагинация (
limitиoffsetили курсор для больших лент), фильтры и сортировка через query-параметры; - действия вне CRUD:
POST /orders/{id}/cancel, когда отмена это переход состояния с проверками, а не правка поля; - служебные:
POST /auth/tokenи обновление токена,GET /healthдля liveness и readiness,/metricsдля Prometheus.
Покажите, как это ложится на Python-стек. FastAPI сам строит схему OpenAPI и отдаёт документацию на /docs, валидирует тело через Pydantic и на ошибку схемы отвечает 422. В Django REST Framework ModelViewSet вместе с роутером даёт весь набор CRUD-маршрутов почти без кода. Версию держите в пути (/api/v1), а для платежей и других повторяемых POST добавьте ключ идемпотентности в заголовке.
Где спотыкаются
Сразу пишут список ручек, не спросив, что за система. Без требований любой набор эндпоинтов одинаково произволен.
Кладут глагол в URL: /getUsers, /deleteOrder?id=5. Метод уже говорит, что делаем, а удаление через GET ещё и опасно: такую ссылку может открыть краулер или префетч браузера.
Отдают весь список без пагинации и на любую ошибку отвечают 200 с полем error в теле. Клиенту и мониторингу приходится разбирать тело, чтобы понять, что запрос не удался.