Введение: REST API на C# — это просто
Создание современного REST API на C# с использованием ASP.NET Core — одна из самых востребованных задач в backend-разработке. Многие начинающие разработчики считают, что написание полноценного API требует недель подготовки. На самом деле, используя правильные инструменты, вы можете создать рабочее REST API на C# буквально за 30 минут.
В этой статье мы на практике разберем, как написать REST API на C# с нуля. Мы создадим простой микросервис для управления списком задач (Todo List), используя встроенные возможности ASP.NET Core. Вы узнаете, как настроить маршрутизацию, реализовать CRUD-операции и протестировать API через Swagger UI.
1. Настройка проекта за 5 минут
Для начала убедитесь, что у вас установлен .NET SDK 6.0 или новее. Если нет — скачайте его с официального сайта Microsoft. Откройте терминал и выполните следующие команды:
dotnet new webapi -n TodoApi
cd TodoApi
code .
Эти команды создадут новый проект Web API и откроют его в Visual Studio Code. Структура проекта включает несколько важных файлов:
Program.cs— точка входа и настройка сервисовControllers/— папка для контроллеров APIappsettings.json— файл конфигурации
По умолчанию проект уже содержит пример контроллера WeatherForecastController. Мы удалим его и создадим свой.
Важно: Убедитесь, что в файле Program.cs есть строка builder.Services.AddControllers(); и app.MapControllers();. Это стандартная конфигурация для REST API на C#.
2. Создание модели данных и контроллера (10 минут)
Начнем с создания модели данных. В корневой папке проекта создайте папку Models и добавьте в неё файл TodoItem.cs:
public class TodoItem
{
public int Id { get; set; }
public string Title { get; set; } = string.Empty;
public bool IsComplete { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
Теперь создадим контроллер. В папке Controllers добавьте файл TodoController.cs. Это сердце нашего REST API на C#:
[ApiController]
[Route("api/[controller]")]
public class TodoController : ControllerBase
{
private static List<TodoItem> _todos = new();
private static int _nextId = 1;
[HttpGet]
public IActionResult GetAll()
{
return Ok(_todos);
}
[HttpGet("{id}")]
public IActionResult GetById(int id)
{
var todo = _todos.FirstOrDefault(t => t.Id == id);
if (todo == null) return NotFound();
return Ok(todo);
}
[HttpPost]
public IActionResult Create(TodoItem item)
{
item.Id = _nextId++;
_todos.Add(item);
return CreatedAtAction(nameof(GetById), new { id = item.Id }, item);
}
[HttpPut("{id}")]
public IActionResult Update(int id, TodoItem item)
{
var existing = _todos.FirstOrDefault(t => t.Id == id);
if (existing == null) return NotFound();
existing.Title = item.Title;
existing.IsComplete = item.IsComplete;
return NoContent();
}
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
var todo = _todos.FirstOrDefault(t => t.Id == id);
if (todo == null) return NotFound();
_todos.Remove(todo);
return NoContent();
}
}
Обратите внимание на атрибуты:
[ApiController]— включает автоматическую валидацию моделей[Route("api/[controller]")]— задает базовый маршрут/api/todo[HttpGet], [HttpPost], [HttpPut], [HttpDelete]— привязывают методы к HTTP-глаголам
3. Тестирование API в Swagger (5 минут)
ASP.NET Core автоматически включает Swagger UI для тестирования REST API на C#. Запустите проект командой:
dotnet run
Откройте браузер и перейдите по адресу https://localhost:5001/swagger. Вы увидите интерактивную документацию вашего API:
- GET /api/todo — получить все задачи
- GET /api/todo/{id} — получить задачу по ID
- POST /api/todo — создать новую задачу
- PUT /api/todo/{id} — обновить задачу
- DELETE /api/todo/{id} — удалить задачу
Попробуйте выполнить POST-запрос с телом:
{
"title": "Изучить C#",
"isComplete": false
}
Вы получите ответ с кодом 201 (Created) и данными новой задачи. Затем выполните GET-запрос, чтобы убедиться, что данные сохранились. Ваше REST API на C# работает!
4. Добавление реальной базы данных (10 минут)
В реальных проектах данные хранят в базе, а не в памяти. Подключим Entity Framework Core с SQLite. Установите пакеты:
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
Создайте файл Data/AppDbContext.cs:
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
public DbSet<TodoItem> TodoItems { get; set; }
}
В Program.cs добавьте:
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlite("Data Source=todo.db"));
Обновите контроллер для работы с БД (через dependency injection). После миграции (dotnet ef migrations add InitialCreate) ваше REST API на C# будет сохранять данные в SQLite.
Заключение
Мы создали полноценное REST API на C# за 30 минут. Вы научились:
- Настраивать проект ASP.NET Core Web API
- Создавать модели данных и контроллеры
- Реализовывать CRUD-операции с правильными HTTP-метода