Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Бронювання столиків
1. Початковий рівень. Створити вебсервіс ASP.NET Core Minimal API, який зберігає в пам’яті бронювання столиків (ім’я гостя, номер столика, дата й час) і надає кінцеві точки GET /api/bookings, GET /api/bookings/{id} і POST /api/bookings; перевірити їх запитами з файлу .http.
2. Базовий рівень. Створити вебсервіс бронювання столиків з повним набором CRUD, у якому номер столика має бути від 1 до 20, кількість гостей – від 1 до 8, а час – у межах 10:00–22:00; помилки повертаються як ProblemDetails (400), зайнятий столик на той самий час – 409, неіснуюче бронювання – 404.
3. Високий рівень. Створити вебсервіс ASP.NET Core Minimal API бронювання столиків (ім’я гостя, номер столика, кількість гостей, дата й час) з EF Core, CRUD і фільтром GET /api/bookings?date=… та застосунок Windows Forms із типізованим клієнтом IHttpClientFactory, який показує бронювання вибраної дати в DataGridView, створює й скасовує їх і виводить повідомлення про помилки валідації та недоступність сервісу.
Варіант 2. Шкільний журнал
1. Початковий рівень. Створити вебсервіс Minimal API, який зберігає в пам’яті учнів (ім’я, клас) і надає кінцеві точки для отримання списку, одного учня, додавання та видалення учня.
2. Базовий рівень. Створити вебсервіс Minimal API шкільного журналу з ресурсами /api/students (ім’я, клас) і вкладеною колекцією /api/students/{id}/grades (предмет, оцінка), у якому оцінка має бути від 1 до 12, а предмет – непорожнім; кінцева точка GET /api/students/{id}/average повертає середній бал з двома знаками.
3. Високий рівень. Створити вебсервіс Minimal API шкільного журналу (учні з класом, оцінки з предметом 1–12) зі звітом GET /api/reports/class/{name} (учні, середні бали, найкращий учень) та проєкт інтеграційних тестів WebApplicationFactory<Program>, що перевіряє щонайменше 8 сценаріїв: успішне створення, 400 для оцінки 13, 404 для неіснуючого учня, обчислення середнього бала.
Варіант 3. Прокат самокатів
1. Початковий рівень. Створити вебсервіс Minimal API зі списком самокатів (код, модель, заряд у відсотках, доступність) і кінцевими точками GET /api/scooters та GET /api/scooters/{code}.
2. Базовий рівень. Створити вебсервіс Minimal API прокату самокатів (код, модель, заряд у відсотках, доступність) з кінцевими точками GET /api/scooters, POST /api/rentals (почати оренду) і POST /api/rentals/{id}/finish (завершити), який не дозволяє орендувати зайнятий самокат або самокат із зарядом менше 20 %, а вартість обчислює за тарифом 5 грн за хвилину.
3. Високий рівень. Створити вебсервіс Minimal API прокату самокатів (код, модель, заряд, доступність; оренди з вартістю за хвилини) і консольний клієнт ScooterCli з командами list, rent <код>, finish <id> і --help, який використовує HttpClient, виводить таблицю самокатів, повідомлення з ProblemDetails у потік помилок і повертає коди завершення 0, 1 (помилка сервісу) і 2 (сервіс недоступний).
Варіант 4. Каталог рецептів
1. Початковий рівень. Створити вебсервіс Minimal API, який зберігає рецепти (назва, інгредієнти, час приготування) і повертає список рецептів та один рецепт за ідентифікатором.
2. Базовий рівень. Створити вебсервіс рецептів з пошуком за інгредієнтом GET /api/recipes?ingredient=…, сортуванням за часом приготування і пагінацією page, pageSize (не більше 20); відповідь містить елементи сторінки й загальну кількість.
3. Високий рівень. Створити вебсервіс Minimal API рецептів (назва, інгредієнти, час приготування) з EF Core, пошуком за інгредієнтами й пагінацією, групами маршрутів, описами кінцевих точок (WithSummary) і документом OpenAPI, а також файл .http з усіма запитами та інтеграційні тести пагінації і пошуку за кількома інгредієнтами одночасно.
Варіант 5. Облік тренувань
1. Початковий рівень. Створити вебсервіс Minimal API для обліку тренувань (дата, вправа, кількість підходів і повторень) з кінцевими точками додавання та отримання списку.
2. Базовий рівень. Створити вебсервіс Minimal API обліку тренувань (дата, вправа, кількість підходів і повторень) з CRUD, валідацією (підходів 1–10, повторень 1–100, дата не в майбутньому) і кінцевою точкою GET /api/stats?from=…&to=…, яка повертає кількість тренувань і загальну кількість повторень за вправами.
3. Високий рівень. Створити вебсервіс Minimal API обліку тренувань (дата, вправа, підходи, повторення) зі статистикою за період і консольний клієнт на основі типізованого клієнта IHttpClientFactory зі стійкістю AddStandardResilienceHandler, який імпортує тренування з CSV-файлу, переданого аргументом, пропускає рядки з помилками з повідомленням і виводить таблицю статистики за місяць.
Варіант 6. Служба доставки
1. Початковий рівень. Створити вебсервіс Minimal API, який зберігає замовлення доставки (адреса, вага, статус) і дозволяє створити замовлення та отримати його за номером.
2. Базовий рівень. Створити вебсервіс Minimal API доставки із замовленнями (адреса, вага, статус), у якому статус змінюється запитом PATCH /api/orders/{id}/status лише в порядку «new → shipped → delivered»; недопустимий перехід повертає 409 з поясненням у ProblemDetails, а список фільтрується за статусом.
3. Високий рівень. Створити вебсервіс Minimal API доставки із замовленнями (адреса, вага, статус «new → shipped → delivered») з EF Core та історією змін статусу GET /api/orders/{id}/history і консольний клієнт для кур’єра з аргументами --order, --status і --help, що змінює статус, перевіряє відповідь сервісу й виводить історію таблицею.
Варіант 7. Музична бібліотека
1. Початковий рівень. Створити вебсервіс Minimal API з колекцією альбомів (назва, виконавець, рік) і кінцевими точками отримання списку, одного альбому та додавання альбому.
2. Базовий рівень. Створити вебсервіс музичної бібліотеки з вкладеним ресурсом /api/albums/{albumId}/tracks, у якому тривалість треку задається в секундах (1–3600), номер треку унікальний в альбомі, а альбом повертається із загальною тривалістю.
3. Високий рівень. Створити вебсервіс Minimal API музичної бібліотеки з альбомами (назва, виконавець, рік), вкладеними треками (номер, назва, тривалість) і пошуком GET /api/tracks?search=… та застосунок Windows Forms, який показує альбоми та треки в двох таблицях, додає й видаляє треки через HttpClient асинхронно і блокує кнопки під час запиту.
Варіант 8. Облік автомобілів
1. Початковий рівень. Створити вебсервіс Minimal API для обліку автомобілів (номер, марка, пробіг) з кінцевими точками CRUD і даними в пам’яті.
2. Базовий рівень. Створити вебсервіс Minimal API обліку автомобілів (номер, марка, пробіг, пробіг на останньому ТО) з CRUD, валідацією номерного знака регулярним виразом ([RegularExpression]), забороною зменшувати пробіг (400) і кінцевою точкою GET /api/cars/due-service, що повертає автомобілі з пробігом понад 15 000 км від останнього ТО.
3. Високий рівень. Створити вебсервіс Minimal API обліку автомобілів (номер, марка, пробіг) з EF Core, записами ТО /api/cars/{id}/services (дата, пробіг, наступне ТО) і консольною утилітою, яка за аргументом --days N виводить нагадування про ТО таблицею, а за --export file.json зберігає їх у JSON-файл.
Варіант 9. Трекер завдань команди
1. Початковий рівень. Створити вебсервіс Minimal API з проєктами та завданнями (назва, виконавець, статус), який повертає завдання проєкту й дозволяє додати завдання.
2. Базовий рівень. Створити вебсервіс Minimal API трекера завдань з проєктами й завданнями (назва, виконавець, статус, термін), фільтрами status, assignee і overdue=true у рядку запиту, групою маршрутів /api/projects/{projectId}/tasks і відповідями ProblemDetails для всіх помилок, зокрема 404 для неіснуючого проєкту.
3. Високий рівень. Створити вебсервіс Minimal API трекера завдань з проєктами й завданнями (назва, виконавець, статус) з CRUD, фільтром кінцевої точки, що перевіряє ключ у заголовку X-Api-Key для змінювальних запитів, документом OpenAPI та інтеграційними тестами фільтрів, 401 без ключа і повного циклу створення, зміни й видалення завдання.
Варіант 10. Бібліотека фільмів
1. Початковий рівень. Створити вебсервіс Minimal API з фільмами (назва, рік, жанр) і кінцевими точками отримання списку й додавання фільму; жанр у JSON записується рядком.
2. Базовий рівень. Створити вебсервіс Minimal API фільмів (назва, рік, жанр) з оцінками користувачів POST /api/movies/{id}/ratings (оцінка 1–10), середньою оцінкою в представленні фільму і сортуванням списку sort=title|year|rating.
3. Високий рівень. Створити вебсервіс Minimal API фільмів (назва, рік, жанр, оцінки 1–10) з EF Core і консольний клієнт з аргументами --genre, --min-rating, --top N і --help, який отримує фільми через GetFromJsonAsync, виводить рейтинг таблицею та обробляє тайм-аут запиту в 5 секунд.
Варіант 11. Запис до перукарні
1. Початковий рівень. Створити вебсервіс Minimal API з майстрами перукарні та записами клієнтів (ім’я, майстер, час) з кінцевими точками отримання та створення записів.
2. Базовий рівень. Створити вебсервіс Minimal API запису до перукарні з майстрами та записами (ім’я клієнта, майстер, час), у якому запис триває 30 хвилин, не може перетинатися з іншим записом того самого майстра (409) і повинен бути в робочий час 9:00–19:00; кінцева точка GET /api/masters/{id}/slots?date=… повертає вільні слоти.
3. Високий рівень. Створити вебсервіс Minimal API запису до перукарні (майстри, записи по 30 хв у робочий час без перетинів, вільні слоти майстра на дату) та застосунок Windows Forms із типізованим клієнтом, у якому користувач вибирає майстра і дату, бачить вільні слоти, створює запис і отримує повідомлення з тексту ProblemDetails у разі конфлікту.
Варіант 12. Метеодані
1. Початковий рівень. Створити вебсервіс Minimal API з метеостанціями та вимірюваннями температури, який дозволяє додати вимірювання й отримати вимірювання станції.
2. Базовий рівень. Створити вебсервіс Minimal API метеоданих зі станціями та вимірюваннями (час, температура), валідацією температури (−60…60 °C) і кінцевою точкою GET /api/stations/{id}/summary?from=…&to=…, яка повертає мінімум, максимум і середнє значення за період або 404, якщо станції немає.
3. Високий рівень. Створити вебсервіс Minimal API метеоданих (станції, вимірювання температури з часом) з EF Core і застосунок Windows Forms, який завантажує вимірювання вибраної станції через HttpClient і малює графік температури засобами GDI+ з підписами осей.
Варіант 13. Книгообмін
1. Початковий рівень. Створити вебсервіс Minimal API з книгами, запропонованими для обміну (назва, автор, власник), і кінцевими точками CRUD.
2. Базовий рівень. Створити вебсервіс Minimal API книгообміну з книгами (назва, автор, власник) і пропозиціями обміну POST /api/exchanges зі статусами «pending», «accepted», «rejected» і перевірками: не можна пропонувати обмін власною книгою, прийняти можна лише очікувану пропозицію.
3. Високий рівень. Створити вебсервіс Minimal API книгообміну (книги з власником, пропозиції обміну зі статусами «pending», «accepted», «rejected») та проєкт інтеграційних тестів WebApplicationFactory<Program>, який перевіряє повний сценарій обміну, усі заборонені переходи статусів (409), валідацію (400) і відповіді для неіснуючих книг.
Варіант 14. Інвентар офісу
1. Початковий рівень. Створити вебсервіс Minimal API з предметами інвентарю (інвентарний номер, назва, кабінет) і кінцевими точками отримання та додавання предметів.
2. Базовий рівень. Створити вебсервіс Minimal API офісного інвентарю (інвентарний номер, назва, кабінет), у якому інвентарний номер має формат INV-0000 і є унікальним (409 для дубліката), а переміщення POST /api/items/{id}/moves змінює кабінет і записує історію переміщень.
3. Високий рівень. Створити вебсервіс Minimal API офісного інвентарю (інвентарний номер, назва, кабінет) з EF Core і консольну утиліту інвентаризації, яка читає з файлу список номерів, знайдених у кабінеті (аргументи --room, --file), порівнює його з даними сервісу і виводить таблиці відсутніх і зайвих предметів.
Варіант 15. Спортивний турнір
1. Початковий рівень. Створити вебсервіс Minimal API з командами турніру (назва, місто) і кінцевими точками отримання списку та додавання команди.
2. Базовий рівень. Створити вебсервіс Minimal API турніру з командами (назва, місто), матчами POST /api/matches (команди, рахунок) і кінцевою точкою GET /api/standings, що повертає турнірну таблицю (ігри, перемоги, нічиї, поразки, різниця м’ячів, очки), відсортовану за очками.
3. Високий рівень. Створити вебсервіс Minimal API турніру (команди, матчі з рахунком, турнірна таблиця) з EF Core і консольний клієнт, який вводить результати туру з CSV-файлу (господарі, гості, рахунок) через PostAsJsonAsync, повідомляє про відхилені матчі з текстом ProblemDetails і виводить оновлену турнірну таблицю.
Варіант 16. Облік витрат
1. Початковий рівень. Створити вебсервіс Minimal API для обліку витрат (дата, категорія, сума) з кінцевими точками додавання витрати та отримання списку.
2. Базовий рівень. Створити вебсервіс Minimal API обліку витрат (дата, категорія, сума) з категоріями й місячними лімітами, валідацією суми (0,01–1 000 000 грн) і кінцевою точкою GET /api/reports/{year}/{month}, що повертає суми за категоріями та ознаку перевищення ліміту.
3. Високий рівень. Створити вебсервіс Minimal API обліку витрат (дата, категорія, сума; місячні ліміти категорій) і консольний клієнт з типізованим клієнтом IHttpClientFactory, який за аргументами add, report <рік> <місяць> і --help додає витрати та виводить місячний звіт таблицею з підсумком і позначками перевищень.
Варіант 17. Каталог квітів
1. Початковий рівень. Створити вебсервіс Minimal API з каталогом квітів (назва, ціна, залишок) і кінцевими точками отримання каталогу та однієї квітки.
2. Базовий рівень. Створити вебсервіс Minimal API квіткового магазину з каталогом квітів (назва, ціна, залишок) і замовленням POST /api/orders (позиції та кількості), яке зменшує залишки і відхиляється з кодом 409 і переліком позицій, якщо якоїсь квітки не вистачає.
3. Високий рівень. Створити вебсервіс Minimal API квіткового магазину (квіти з ціною й залишком, замовлення з позиціями) з EF Core, у якому замовлення оформлюється в транзакції бази даних, та інтеграційні тести, що перевіряють зменшення залишків, відхилення замовлення без зміни залишків і обчислення суми замовлення.
Варіант 18. Електронна черга
1. Початковий рівень. Створити вебсервіс Minimal API електронної черги, який видає талон POST /api/tickets з порядковим номером і повертає список талонів.
2. Базовий рівень. Створити вебсервіс Minimal API електронної черги, який видає талони з порядковим номером і часом видачі POST /api/tickets, викликає наступний талон POST /api/queue/next (204, якщо черга порожня) і повертає статистику GET /api/queue/stats із кількістю обслугованих і середнім часом очікування.
3. Високий рівень. Створити вебсервіс Minimal API електронної черги (видача талонів, виклик наступного, поточний талон і статистика) та застосунок Windows Forms «Табло», який кожні 5 секунд асинхронно отримує поточний талон і статистику, показує їх великим шрифтом і повідомляє про втрату зв’язку із сервісом, не зупиняючи оновлення.
Варіант 19. Облік ліків
1. Початковий рівень. Створити вебсервіс Minimal API з препаратами (назва, дозування) і кінцевими точками CRUD з даними в пам’яті.
2. Базовий рівень. Створити вебсервіс Minimal API обліку ліків з препаратами (назва, дозування), розкладом прийому /api/medicines/{id}/schedule (час, кількість таблеток 1–4) і кінцевою точкою GET /api/intakes?date=…, яка повертає прийоми на день, відсортовані за часом.
3. Високий рівень. Створити вебсервіс Minimal API обліку ліків (препарати, розклад прийому, позначки прийому) з EF Core і консольний клієнт, який за аргументом --date виводить розклад прийомів таблицею, позначає прийняті ліки командою take <id> і повертає код 1 з повідомленням у потік помилок у разі помилки сервісу.
Варіант 20. Туристичні маршрути
1. Початковий рівень. Створити вебсервіс Minimal API з туристичними маршрутами (назва, складність) і кінцевими точками отримання списку та додавання маршруту.
2. Базовий рівень. Створити вебсервіс Minimal API туристичних маршрутів (назва, складність) із точками /api/routes/{id}/points (широта −90…90, довгота −180…180) і довжиною маршруту в кілометрах, обчисленою за формулою гаверсинуса з одним знаком після коми.
3. Високий рівень. Створити вебсервіс Minimal API туристичних маршрутів (назва, складність, точки з координатами) з пошуком поблизу GET /api/routes/near?lat=…&lon=…&km=…, документом OpenAPI та консольним клієнтом, що імпортує точки маршруту з JSON-файлу і виводить маршрути в радіусі таблицею з відстанями.
Варіант 21. Словник термінів
1. Початковий рівень. Створити вебсервіс Minimal API зі словником термінів (термін, визначення, категорія) і кінцевими точками отримання термінів та додавання терміна.
2. Базовий рівень. Створити вебсервіс Minimal API словника термінів (термін, визначення, категорія) з пошуком GET /api/terms?search=…&category=… без урахування регістру, унікальністю терміна (409) і пагінацією з кількістю знайдених термінів у відповіді.
3. Високий рівень. Створити вебсервіс Minimal API словника термінів (термін, визначення, категорія) з кінцевою точкою імпорту POST /api/terms/import, яка приймає JSON-масив, додає коректні терміни і повертає звіт (додано, пропущено, помилки з номерами елементів), та інтеграційні тести імпорту.
Варіант 22. Облік волонтерів
1. Початковий рівень. Створити вебсервіс Minimal API з подіями для волонтерів (назва, дата, кількість місць) і кінцевими точками отримання та створення подій.
2. Базовий рівень. Створити вебсервіс Minimal API волонтерських подій (назва, дата, кількість місць) з реєстрацією POST /api/events/{id}/registrations, валідацією email ([EmailAddress]), забороною повторної реєстрації (409) і відмовою, коли місць не залишилося.
3. Високий рівень. Створити вебсервіс Minimal API волонтерських подій (назва, дата, кількість місць, реєстрації волонтерів за email) з EF Core і застосунок Windows Forms, у якому координатор бачить події з кількістю вільних місць, список зареєстрованих і скасовує реєстрації через типізований клієнт.
Варіант 23. Каталог ноутбуків
1. Початковий рівень. Створити вебсервіс Minimal API з ноутбуками (модель, процесор, ОЗП, ціна) і кінцевими точками отримання списку та одного ноутбука.
2. Базовий рівень. Створити вебсервіс Minimal API каталогу ноутбуків (модель, процесор, ОЗП, ціна) з фільтрами minRam, maxPrice, cpu, сортуванням sort=price|ram і пагінацією; недопустимі значення параметрів повертають 400 з переліком помилок.
3. Високий рівень. Створити вебсервіс Minimal API каталогу ноутбуків (модель, процесор, ОЗП, ціна) з EF Core і консольний клієнт порівняння, який отримує ідентифікатори аргументами (compare 3 7 12), завантажує ноутбуки паралельно через Task.WhenAll і виводить таблицю характеристик із найкращими значеннями.
Варіант 24. Облік гуртожитку
1. Початковий рівень. Створити вебсервіс Minimal API з кімнатами гуртожитку (номер, кількість місць) і кінцевими точками отримання та додавання кімнат.
2. Базовий рівень. Створити вебсервіс Minimal API гуртожитку з кімнатами (номер, кількість місць), поселенням POST /api/rooms/{id}/residents і виселенням DELETE /api/rooms/{id}/residents/{studentId}, забороною перевищувати кількість місць (409) і списком кімнат із вільними місцями.
3. Високий рівень. Створити вебсервіс Minimal API гуртожитку (кімнати з кількістю місць, поселення й виселення студентів, звіт про заповненість) з EF Core та інтеграційні тести, які замінюють базу даних у WebApplicationFactory і перевіряють поселення, переповнення кімнати, повторне поселення студента та звіт про заповненість.
Варіант 25. Конференція
1. Початковий рівень. Створити вебсервіс Minimal API з доповідями конференції (тема, доповідач, час) і кінцевими точками отримання програми та додавання доповіді.
2. Базовий рівень. Створити вебсервіс Minimal API конференції з доповідями (тема, доповідач, зал, день, час початку й кінця), перевіркою перетину доповідей в одному залі (409) і розкладом GET /api/schedule?day=…, згрупованим за залами.
3. Високий рівень. Створити вебсервіс Minimal API конференції з доповідями (тема, доповідач, зал, час) і реєстрацією слухачів за email та консольний клієнт, який за аргументами schedule, register <доповідь> <email> і --help показує розклад таблицею та реєструє слухача, виводячи помилки ProblemDetails у потік помилок.
Варіант 26. Скорочувач посилань
1. Початковий рівень. Створити вебсервіс Minimal API, який за запитом POST /api/links з довгою адресою створює короткий код із 6 символів і повертає його.
2. Базовий рівень. Створити вебсервіс Minimal API скорочення посилань, який за запитом POST /api/links перевіряє коректність URL і створює короткий код із 6 символів, перенаправляє запит GET /{code} на довгу адресу (TypedResults.Redirect), повертає 404 для невідомого коду і рахує переходи.
3. Високий рівень. Створити вебсервіс Minimal API скорочення посилань з EF Core, який створює короткі коди для довгих адрес і перенаправляє за ними, з власними кодами (4–20 латинських літер і цифр, 409 для зайнятого), статистикою переходів за днями та інтеграційними тестами перенаправлення і статистики.
Варіант 27. Оренда обладнання
1. Початковий рівень. Створити вебсервіс Minimal API з обладнанням для оренди (назва, ціна за добу, доступність) і кінцевими точками отримання та додавання обладнання.
2. Базовий рівень. Створити вебсервіс Minimal API оренди обладнання (назва, ціна за добу) з оформленням оренди на період, перевіркою доступності на всі дні (409), обчисленням вартості і поверненням обладнання.
3. Високий рівень. Створити вебсервіс Minimal API оренди обладнання (назва, ціна за добу, оренди на період) і консольний клієнт з типізованим клієнтом та AddStandardResilienceHandler, який переживає тимчасову недоступність сервісу (перевірити, зупиняючи й запускаючи сервіс), повторює лише безпечні запити і виводить журнал спроб.
Варіант 28. Книга відгуків
1. Початковий рівень. Створити вебсервіс Minimal API з відгуками (автор, текст, оцінка) і кінцевими точками отримання списку та додавання відгуку.
2. Базовий рівень. Створити вебсервіс Minimal API книги відгуків (автор, текст, оцінка) з модерацією: нові відгуки мають статус «pending», публічний список показує лише схвалені, а PATCH /api/reviews/{id}/approve схвалює відгук; оцінка 1–5, текст 10–1000 символів, фільтр minRating.
3. Високий рівень. Створити вебсервіс Minimal API книги відгуків (автор, текст, оцінка, статус), у якому модерацію дозволено лише з ключем у заголовку (фільтр кінцевої точки), та застосунок Windows Forms для модератора зі списком відгуків на перевірку, кнопками схвалення й видалення і середньою оцінкою.
Варіант 29. Автопарк таксі
1. Початковий рівень. Створити вебсервіс Minimal API з водіями таксі (ім’я, автомобіль, номер) і кінцевими точками CRUD.
2. Базовий рівень. Створити вебсервіс Minimal API автопарку таксі з водіями (ім’я, автомобіль, номер) і змінами /api/drivers/{id}/shifts (початок, кінець, виручка), перевіркою, що зміна не перетинається з іншою і триває не більше 12 годин, і звітом виручки водія за період.
3. Високий рівень. Створити вебсервіс Minimal API автопарку таксі (водії, зміни з виручкою) з EF Core і консольний клієнт звіту, який за аргументами --from, --to і --csv отримує виручку всіх водіїв, виводить таблицю з підсумком і за потреби зберігає її у CSV-файл.
Варіант 30. Облік домашніх тварин
1. Початковий рівень. Створити вебсервіс Minimal API з домашніми тваринами (кличка, вид, дата народження) і кінцевими точками отримання та додавання тварин.
2. Базовий рівень. Створити вебсервіс Minimal API обліку домашніх тварин (кличка, вид, дата народження) із щепленнями /api/pets/{id}/vaccinations (назва, дата, наступна дата) і кінцевою точкою GET /api/reminders?days=30, яка повертає щеплення, термін яких настає протягом заданої кількості днів.
3. Високий рівень. Створити вебсервіс Minimal API обліку домашніх тварин (кличка, вид, дата народження; щеплення з датою й наступною датою) з EF Core і застосунок Windows Forms із типізованим клієнтом, який показує тварин і щеплення, додає записи з перевіркою дат і підсвічує прострочені щеплення напівжирним шрифтом.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Спроєктувати ресурси свого варіанта: адреси, методи HTTP, DTO, коди стану успішних відповідей і помилок.
- Створити проєкт ASP.NET Core Web API (.NET 10, без контролерів), реалізувати кінцеві точки з групами маршрутів,
TypedResults, валідацією таProblemDetails. - Перевірити всі кінцеві точки запитами з файлу
.http, зокрема помилкові запити (400, 404), і переглянути документ/openapi/v1.json. - Для завдань із клієнтом створити консольний або віконний застосунок на
HttpClient(IHttpClientFactory) з обробкою недоступності сервісу і помилок валідації. - Продемонструвати роботу сервісу й клієнта викладачеві, пояснити програмний код і відповісти на контрольні питання.