Введение: REST API на C# — это проще, чем кажется
Разработка веб-приложений и микросервисов немыслима без REST API. Если вы только начинаете свой путь в программировании, создание собственного API может показаться сложной задачей. Однако с фреймворком ASP.NET Core на C# вы сможете написать работающий RESTful сервис буквально за 30 минут.
В этом руководстве мы шаг за шагом создадим простое API для управления списком задач (Todo List). Вы узнаете, как настроить проект, создать модель данных, контроллер и протестировать эндпоинты. Никакой магии — только чистый код и понятные объяснения.
К концу статьи у вас будет полностью функционирующий API, поддерживающий все основные CRUD-операции (Create, Read, Update, Delete).
Шаг 1: Подготовка окружения и создание проекта
Прежде чем писать код, убедитесь, что у вас установлены необходимые инструменты:
- .NET SDK (версия 8.0 или новее) — скачать с официального сайта Microsoft
- Visual Studio (2022 Community Edition) или Visual Studio Code с расширением C#
- Postman или любой другой REST-клиент для тестирования
Откройте терминал (или командную строку) и выполните следующую команду для создания нового проекта Web API:
dotnet new webapi -n TodoApi
cd TodoApi
После создания проекта откройте папку TodoApi в вашей IDE. Структура проекта будет содержать несколько папок и файлов, но нас пока интересуют три ключевых: Program.cs, Controllers и Models.
Шаг 2: Создание модели данных
Модель — это класс, который описывает структуру данных нашего API. Для списка задач нам понадобятся три поля: уникальный идентификатор, название и статус выполнения.
Создайте новую папку Models в корне проекта, а внутри — файл TodoItem.cs:
namespace TodoApi.Models;
public class TodoItem
{
public int Id { get; set; }
public string? Name { get; set; }
public bool IsComplete { get; set; }
}
Обратите внимание на вопросительный знак после string. Он указывает, что свойство Name может быть null. Это хорошая практика для избежания предупреждений компилятора.
Шаг 3: Создание контроллера и реализация CRUD
Контроллер — это класс, который обрабатывает HTTP-запросы. В ASP.NET Core контроллеры наследуются от ControllerBase и используют атрибуты для маршрутизации.
Создайте файл TodoItemsController.cs в папке Controllers:
using Microsoft.AspNetCore.Mvc;
using TodoApi.Models;
namespace TodoApi.Controllers;
[ApiController]
[Route("api/[controller]")]
public class TodoItemsController : ControllerBase
{
private static List<TodoItem> _todoItems = new();
// GET: api/TodoItems
[HttpGet]
public ActionResult<IEnumerable<TodoItem>> GetTodoItems()
{
return _todoItems;
}
// GET: api/TodoItems/1
[HttpGet("{id}")]
public ActionResult<TodoItem> GetTodoItem(int id)
{
var item = _todoItems.FirstOrDefault(t => t.Id == id);
if (item == null)
return NotFound();
return item;
}
// POST: api/TodoItems
[HttpPost]
public ActionResult<TodoItem> PostTodoItem(TodoItem item)
{
item.Id = _todoItems.Count + 1;
_todoItems.Add(item);
return CreatedAtAction(nameof(GetTodoItem), new { id = item.Id }, item);
}
// PUT: api/TodoItems/1
[HttpPut("{id}")]
public IActionResult PutTodoItem(int id, TodoItem updatedItem)
{
var existingItem = _todoItems.FirstOrDefault(t => t.Id == id);
if (existingItem == null)
return NotFound();
existingItem.Name = updatedItem.Name;
existingItem.IsComplete = updatedItem.IsComplete;
return NoContent();
}
// DELETE: api/TodoItems/1
[HttpDelete("{id}")]
public IActionResult DeleteTodoItem(int id)
{
var item = _todoItems.FirstOrDefault(t => t.Id == id);
if (item == null)
return NotFound();
_todoItems.Remove(item);
return NoContent();
}
}
Давайте разберем, что здесь происходит:
[ApiController]— включает автоматическую валидацию моделей и другие удобные функции[Route("api/[controller]")]— задает базовый URL:/api/TodoItems- Мы используем временное хранилище в виде статического списка. В реальном проекте вы бы подключили базу данных
- Каждый HTTP-метод (GET, POST, PUT, DELETE) обрабатывается отдельным методом контроллера
CreatedAtActionвозвращает код 201 и URL только что созданного ресурса
Шаг 4: Настройка Program.cs и запуск
Откройте файл Program.cs. В современных версиях .NET (8+) он выглядит лаконично. Убедитесь, что он содержит следующие строки:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
Эти строки подключают контроллеры и настраивают маршрутизацию. Теперь запустите приложение:
dotnet run
Вы увидите сообщение, что сервер запущен на http://localhost:5000 и, возможно, https://localhost:5001.
Шаг 5: Тестирование API с помощью Postman
Откройте Postman и выполните следующие запросы:
Создание задачи (POST)
Метод: POST
URL: http://localhost:5000/api/TodoItems
Тело (JSON):
{
"name": "Изучить C#",
"isComplete": false
}
В ответ вы получите статус 201 Created и созданную задачу с присвоенным ID.
Получение всех задач (GET)
Блоги
Рекомендаций по книгам
Читайте также