В мире веб-разработки создание надежных и эффективных API-интерфейсов REST является важным навыком. Независимо от того, являетесь ли вы новичком в C# или имеете некоторый опыт программирования, создание RESTful API с использованием .NET Core и Entity Framework с PostgreSQL — отличная отправная точка для погружения в разработку серверной части. .NET Core — это кроссплатформенная платформа с открытым исходным кодом, позволяющая создавать современные приложения, а Entity Framework упрощает процесс работы с базами данных. В этом руководстве мы проведем вас через пошаговый процесс настройки проекта .NET Core, интеграции Entity Framework с PostgreSQL и создания полнофункционального REST API. Давайте отправимся в это путешествие вместе!
Предпосылки
Прежде чем мы начнем, убедитесь, что в вашей системе установлены следующие предварительные компоненты:
- .NET Core SDK: загрузите и установите последнюю версию с официального веб-сайта .NET.
- Visual Studio Code: установите VSCode, легкий, но мощный редактор кода, с официального сайта VSCode.
- PostgreSQL: установите PostgreSQL, систему управления реляционными базами данных с открытым исходным кодом, и создайте базу данных для нашего проекта.
Начиная
Начнем с создания нового проекта .NET Core Web API. Откройте терминал или командную строку и выполните следующие команды:
# Create a new .NET Core Web API project dotnet new webapi -n MyRestApi cd MyRestApi
Это создаст новый проект веб-API .NET Core с именем «MyRestApi» и перенаправит вас в каталог проекта.
Установка ядра Entity Framework
Далее мы установим Entity Framework Core, чтобы включить операции с базой данных. В терминале выполните следующую команду:
# Install Entity Framework Core package dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
Эта команда устанавливает поставщик базы данных PostgreSQL для Entity Framework Core. Это позволяет нам беспрепятственно взаимодействовать с базой данных PostgreSQL.
Настройка контекста базы данных
Теперь давайте настроим контекст базы данных для работы с PostgreSQL. Создайте новую папку с именем «Данные» в своем проекте и добавьте новый файл с именем «AppDbContext.cs» со следующим кодом:
// Data/AppDbContext.cs using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Todo> Todos { get; set; } }
В приведенном выше коде мы определяем класс «AppDbContext», который наследуется от «DbContext». Класс «AppDbContext» содержит свойство «DbSet» для модели «Todo», позволяющее нам выполнять операции с базой данных в таблице «Todo».
Настройка подключения к базе данных
Теперь нам нужно настроить подключение к базе данных в файле «Startup.cs». Откройте файл «Startup.cs» в корне вашего проекта и измените метод «ConfigureServices» следующим образом:
// Startup.cs using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; public class Startup { private readonly IConfiguration _configuration; public Startup(IConfiguration configuration) { _configuration = configuration; } public void ConfigureServices(IServiceCollection services) { // Database connection with PostgreSQL services.AddDbContext<AppDbContext>(options => options.UseNpgsql(_configuration.GetConnectionString("DefaultConnection"))); // Other configurations services.AddControllers(); } // Rest of the code }
В приведенном выше коде мы используем объект «Конфигурация» для извлечения строки подключения из файла «appsettings.json». Убедитесь, что у вас есть файл «appsettings.json» в корне вашего проекта со следующим содержимым:
{ "ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=5432;Database=mydatabase;Username=myusername;Password=mypassword" }, "Logging": { // Logging configurations (optional) }, "AllowedHosts": "*" }
Замените заполнители localhost
, 5432
, mydatabase
, myusername
и mypassword
на соответствующие значения для вашей базы данных PostgreSQL.
Создание модели данных
Теперь, когда у нас настроен контекст базы данных, давайте создадим простую модель данных. В этом примере мы создадим модель Todo
, которая представляет элемент списка задач с Id
и Title
.
Откройте папку Model
в своем проекте и создайте новый файл с именем Todo.cs
со следующим кодом:
// Models/Todo.cs using System.ComponentModel.DataAnnotations; public class Todo { public int Id { get; set; } [Required] public string Title { get; set; } }
В приведенном выше коде мы определяем класс «Todo» с двумя свойствами: «Id» типа «int» и «Title» типа «string». Мы также используем аннотации данных, чтобы обеспечить обязательность свойства «Заголовок».
Реализация CRUD-операций
Когда контекст базы данных, конфигурация и модель данных настроены, пришло время реализовать операции CRUD (создание, чтение, обновление, удаление) для нашей модели «Todo».
- Создание задачи
Откройте папку «Контроллеры» в вашем проекте и создайте новый файл с именем «TodosController.cs» со следующим кодом:
// Controllers/TodosController.cs using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; [ApiController] [Route("api/[controller]")] public class TodosController : ControllerBase { private readonly AppDbContext _dbContext; public TodosController(AppDbContext dbContext) { _dbContext = dbContext; } [HttpGet] public ActionResult<IEnumerable<Todo>> GetTodos() { return _dbContext.Todos.ToList(); } [HttpGet("{id}")] public ActionResult<Todo> GetTodoById(int id) { var todo = _dbContext.Todos.Find(id); if (todo == null) { return NotFound(); } return todo; } [HttpPost] public ActionResult<Todo> CreateTodo([FromBody] Todo todo) { _dbContext.Todos.Add(todo); _dbContext.SaveChanges(); return CreatedAtAction(nameof(GetTodoById), new { id = todo.Id }, todo); } [HttpPut("{id}")] public IActionResult UpdateTodo(int id, [FromBody] Todo updatedTodo) { var todo = _dbContext.Todos.Find(id); if (todo == null) { return NotFound(); } todo.Title = updatedTodo.Title; _dbContext.SaveChanges(); return NoContent(); } [HttpDelete("{id}")] public IActionResult DeleteTodo(int id) { var todo = _dbContext.Todos.Find(id); if (todo == null) { return NotFound(); } _dbContext.Todos.Remove(todo); _dbContext.SaveChanges(); return NoContent(); } }
В приведенном выше коде мы реализовали «TodosController» с конечными точками для выполнения операций CRUD в модели «Todo». Контроллер использует «AppDbContext» для взаимодействия с базой данных PostgreSQL.
Тестирование API
Теперь, когда мы реализовали операции CRUD, давайте протестируем наш API с помощью клиента REST, такого как Postman.
- Запустите приложение .NET Core, выполнив следующую команду в терминале или командной строке:
dotnet run
2. Откройте Postman или любой клиент REST и отправьте HTTP-запросы на следующие конечные точки:
- ПОЛУЧИТЕ
http://localhost:5000/api/todos
, чтобы получить все задачи. - ПОЛУЧИТЬ
http://localhost:5000/api/todos/{id}
, чтобы получить задачу по ее идентификатору. - POST
http://localhost:5000/api/todos
с телом JSON, содержащим свойствоTitle
, чтобы создать новую задачу. - ПОМЕСТИТЕ
http://localhost:5000/api/todos/{id}
с телом JSON, содержащим обновленное свойствоTitle
, чтобы обновить задачу. - УДАЛИТЬ
http://localhost:5000/api/todos/{id}
, чтобы удалить задачу по ее идентификатору.
Заключение
Поздравляем! Вы успешно создали REST API с помощью .NET Core и Entity Framework с PostgreSQL. В этом учебнике представлено подробное руководство для начинающих C# по началу работы с серверной разработкой. Благодаря универсальности .NET Core и простоте использования Entity Framework создание эффективных и масштабируемых API становится легкой задачей. Продолжайте изучать и экспериментировать с различными функциями .NET Core и Entity Framework, чтобы еще больше улучшить свои навыки разработки API и серверной части. Удачного кодирования и получайте удовольствие от создания невероятных RESTful API!