Что такое эндпоинт (endpoint) в контексте API?

Ответ

Эндпоинт (endpoint) — это уникальный URL, по которому клиентское приложение взаимодействует с серверным API для выполнения конкретной операции над ресурсом.

Структура эндпоинта:

  • Метод HTTP: Определяет действие (GET, POST, PUT, PATCH, DELETE).
  • Путь (Path): Указывает на ресурс или коллекцию (например, /api/users).
  • Параметры: Могут быть в пути (/users/{id}), строке запроса (?page=2) или теле запроса (для POST/PUT).

Примеры:

GET    /api/v1/products          # Получить список товаров
POST   /api/v1/products          # Создать новый товар
GET    /api/v1/products/42       # Получить товар с ID=42
PUT    /api/v1/products/42       # Полностью обновить товар 42
DELETE /api/v1/products/42       # Удалить товар 42

Что тестируют в эндпоинтах:

  1. Корректность HTTP-метода.
  2. Валидацию входных данных (параметры, тело).
  3. Ожидаемые статус-коды (200, 201, 400, 404, 500).
  4. Структуру и данные в ответе (JSON Schema).
  5. Авторизацию и права доступа.

Ответ 18+ 🔞

А, ну вот, слушай, классика жанра подъехала — эндпоинт. Это, блядь, как та самая дверь в сортире, куда ты либо заходишь по-маленькому, либо по-большому, либо просто ебучую стеночку помочить. Только в мире апишек.

Представь: есть у тебя сервер, такой здоровый, молчаливый Герасим. И чтобы с ним поговорить, ему нужно крикнуть не «Му-му», а правильный адресок — URL. Вот этот самый адрес, к которому ты припиздячиваешь ещё и метод — это и есть эндпоинт, ёпта. Точка входа, блядь, конец пути. Финишная прямая для твоего запроса.

Из чего эта хуйня собрана, как конструктор:

  • Метод HTTP: Это как интонация. Ты можешь просить (GET), совать (POST), менять всё целиком (PUT), латать дырки (PATCH) или удалять нахуй (DELETE). Скажешь не тем тоном — получишь по ебалу статусом 405.
  • Путь (Path): Это маршрут до нужной комнаты в этом цифровом замке. /api/users — это общий зал, а /api/users/42 — это уже личная камера для юзера под номером 42, который, скорее всего, уже нихуя не рад.
  • Параметры: А это уже детали, блядь. Могут быть прямо в пути (/users/{id}), как татуировка на лбу. Могут болтаться в строке запроса (?sort=desc&page=2), как сопли на рукаве. А для методов POST/PUT — вообще целая простыня JSON'а в теле, которую этот Герасим должен прочитать и понять.

Примерчики, чтобы вообще всё стало ясно, как божий день:

GET    /api/v1/products          # Эй, Герасим, покажи-ка мне список всех твоих тараканов-товаров!
POST   /api/v1/products          # Держи, мужик, новый таракан в твою коллекцию, вот его досье (JSON).
GET    /api/v1/products/42       # А ну-ка вынь да положь подробности про таракана номер 42. Интересует всё.
PUT    /api/v1/products/42       # Всё, старые данные по 42-му таракану — в мусорку. Вот новые, полные, переписывай.
DELETE /api/v1/products/42       # Таракан 42 надоел. Утопить его, блядь, в пизду. Чтобы духу не было.

И вот на что обычно смотрят, когда этот эндпоинт тыкают палкой (тестируют):

  1. Метод. А тот ли ты метод используешь, хитрожопый? Не пытаешься ли удалить DELETE'ом то, что нужно получить GET'ом?
  2. Валидация. А ту ли хуйню ты ему в тело запроса суёшь? Если вместо числа возраст передашь строку "старый как хуй" — должен получить по рукам статусом 400.
  3. Статусы. Ответил ли Герасим тем, чем должен? Нашёл — 200, создал — 201, не нашёл — 404, сам накосячил — 500. Если на запрос про таракана -1 он отвечает 200 — это пиздец, а не апи.
  4. Ответ. А структура ответа правильная? Пришёл ли JSON в обещанном виде, или там какая-то муть невъебенная? Проверяют по схеме, блядь.
  5. Доступ. А тебе вообще можно сюда? Без токена или будучи обычным юзером — получи в еблет 401 или 403. «Я в этот дом не ногой!».

Вот и вся магия, блядь. Не усложняй. Эндпоинт — это просто дверь. Постучался правильно — тебе откроют и дадут что просил. Начал ебашить в неё ногой или совать в замочную скважину хуй — получишь по ебалу и всё.