# Создание REST API на .NET 9: Пошаговое руководство

Источник: https://www.youtube.com/watch?v=38GNKtclDdE
Канал: freeCodeCamp.org
Опубликовано: 28.05.2025

---

## Разработка REST API на .NET 9: Полное руководство для начинающих
[[JUMP:0:00]]

Данный курс от Алана Омари (Alan Omary), подготовленный для канала **freeCodeCamp.org**, представляет собой пошаговое руководство по созданию REST API с использованием стека ASP.NET Core и новейшей версии **.NET 9**. В ходе обучения рассматриваются основы архитектуры REST, реализация базовых CRUD-операций (создание, чтение, обновление и удаление данных), а также настройка персистентного хранения данных с помощью SQL Server и Entity Framework Core.

---

### 💻 Основы REST API и структура проекта
[[JUMP:0:52]]

REST (Representational State Transfer) — это набор правил взаимодействия систем через интернет с использованием стандартных HTTP-методов: GET, POST, PUT и DELETE. В контексте разработки API на .NET 9 ключевую роль играет структура проекта:

*   **Program.cs**: точка входа, где настраивается контейнер сервисов и конвейер обработки HTTP-запросов.
*   **appsettings.json**: главный файл конфигурации, где хранятся параметры логирования и строки подключения к базе данных.
*   **launchSettings.json**: содержит URL-адреса приложения для среды разработки.
*   **.http файлы**: современный способ тестирования конечных точек (endpoints) прямо из среды Visual Studio, заменяющий собой Swagger UI в новых версиях.

---

### 🛠 Реализация API без базы данных
[[JUMP:7:28]]

На начальном этапе для демонстрации работы API автор предлагает использовать статический список объектов (моделей) в контроллере. Модель (в данном примере — класс `Book`) представляет собой C#-класс, описывающий структуру данных.

Основные методы контроллера:

*   **GET**: возвращает данные. Используется метод `ActionResult` для передачи статуса 200 OK.
*   **GET (по ID)**: поиск конкретного ресурса в списке с возвратом 404 Not Found, если ресурс отсутствует.
*   **POST**: добавление данных. При успешном создании возвращается статус 201 Created.
*   **PUT**: обновление существующих записей.
*   **DELETE**: удаление данных из списка.

Для обеспечения консистентности данных между запросами автор использует ключевое слово `static` при объявлении списка.

---

### 💾 Работа с базой данных: SQL Server и Entity Framework Core
[[JUMP:32:42]]

Поскольку использование статических списков приводит к потере данных при перезапуске приложения, следующим шагом становится подключение к SQL Server.

#### Настройка инфраструктуры:

1.  **Инструменты**: Установка SQL Server и SQL Server Management Studio (SSMS) для управления базой данных.
2.  **Entity Framework Core**: Использование этого фреймворка позволяет взаимодействовать с базой данных через C#-код.
3.  **Контекст (Context Class)**: Создание класса, наследующего `DbContext`, который выступает мостом между C# и БД.
4.  **Миграции**: Использование команд `add-migration` (для создания схемы) и `update-database` (для применения изменений) является стандартной практикой для управления структурой БД.

#### Асинхронность и производительность:
Для предотвращения блокировки потоков приложения при работе с базой данных все методы контроллера переводятся на асинхронную модель:

*   Добавление ключевого слова `async` к сигнатуре метода.
*   Обертывание возвращаемого типа в `Task`.
*   Использование ключевого слова `await` при вызове операций с базой данных (например, `ToListAsync`, `SaveChangesAsync`).