Как написать REST API на C# за 30 минут: пошаговое руководство

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: 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/ — папка для контроллеров API
  • appsettings.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-метода

Блоги

Рекомендаций по книгам