## Тестування API без фронтенду

Postman / Apidog / браузер — інструменти, щоб перевіряти HTTP-запити та відповіді
GET
POST
PUT
DELETE
JSON
Status Codes
Headers

### 1) Навіщо це потрібно

- Фронтенд ще не готовий — але сервер вже має працювати.
- Ми перевіряємо, що API повертає правильні дані і правильні коди.
- Це базовий навик для роботи: “підняв бек — перевірив запити”.

Ключова ідея: Backend = набір URL, які приймають HTTP-запити і повертають відповіді (часто JSON).

### 2) Postman vs Apidog vs браузер — що коли використовувати

Postman найпопулярніший стандарт

- Зручні колекції запитів
- Body/Headers/Auth/Tests
- Легко демонструвати викладачу

Apidog схожий, часто “легший”

- Теж колекції, тести, документація
- Зручний для командної роботи
- Може “вести” API як документацію

Браузер тільки для GET

Браузер зручно перевіряє GET запити, але не підходить для POST/PUT/DELETE так зручно, і майже не дає контролю над headers/body.

### 3) Що ми бачимо в запиті і відповіді

Запит (Request)

- Метод: GET/POST/PUT/DELETE
- URL: наприклад /users
- Headers: Content-Type, Authorization
- Body: JSON (для POST/PUT)

Відповідь (Response)

- Status code: 200 / 201 / 400 / 404 / 500
- Body: JSON або текст
- Time: скільки мс

### 4) Мінімальний набір HTTP кодів (те, що треба знати на курсі)

- 200 OK — все добре (часто GET).
- 201 Created — створили ресурс (часто POST).
- 400 Bad Request — неправильні дані (валідація/JSON).
- 404 Not Found — URL або ресурс не знайдено.
- 500 Server Error — помилка на сервері (ваш код впав).

### 5) Приклади запитів для нашої практичної (User API)

GET Отримати всіх користувачів
GET http://localhost:8080/users

Очікуємо: status 200 + JSON масив.

POST Створити користувача

Headers: Content-Type: application/json

POST http://localhost:8080/users { "name": "Ivan", "email": "ivan@test.com" }

Очікуємо: status 201 або 200 + JSON з даними користувача.

GET Отримати користувача по id (якщо є)
GET http://localhost:8080/users/1

Очікуємо: status 200 або 404, якщо такого id немає.

DELETE Видалити користувача (якщо є)
DELETE http://localhost:8080/users/1

Очікуємо: status 204 або 200.

### 6) Типові помилки студентів (і як їх швидко зловити)

- Connection refused → сервер не запущений або не той порт.
- 404 Not Found → неправильний URL або @RequestMapping.
- 415 Unsupported Media Type → не вказано Content-Type: application/json.
- 400 Bad Request → JSON кривий або не відповідає DTO.
- 500 Server Error → дивимось консоль Spring (stacktrace).

### 7) Міні-завдання на 5 хвилин (щоб зайняти групу)

Зробіть у Postman/Apidog:

- 1) GET /users (перевірити, що сервер відповідає)
- 2) POST /users — створити 2 користувачів
- 3) GET /users — переконатися, що вони з’явилися
- 4) Зробити скрін з результатом і прикріпити в звіт

Хто зробив швидше — додає ще один endpoint (GET /users/{id}).

Далі: налаштовуємо endpoints у Controller та тестуємо їх у Postman