В мире веб-разработки создание надежных и эффективных API-интерфейсов REST является важным навыком. Независимо от того, являетесь ли вы новичком в C# или имеете некоторый опыт программирования, создание RESTful API с использованием .NET Core и Entity Framework с PostgreSQL — отличная отправная точка для погружения в разработку серверной части. .NET Core — это кроссплатформенная платформа с открытым исходным кодом, позволяющая создавать современные приложения, а Entity Framework упрощает процесс работы с базами данных. В этом руководстве мы проведем вас через пошаговый процесс настройки проекта .NET Core, интеграции Entity Framework с PostgreSQL и создания полнофункционального REST API. Давайте отправимся в это путешествие вместе!

Предпосылки

Прежде чем мы начнем, убедитесь, что в вашей системе установлены следующие предварительные компоненты:

  1. .NET Core SDK: загрузите и установите последнюю версию с официального веб-сайта .NET.
  2. Visual Studio Code: установите VSCode, легкий, но мощный редактор кода, с официального сайта VSCode.
  3. 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».

  1. Создание задачи

Откройте папку «Контроллеры» в вашем проекте и создайте новый файл с именем «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.

  1. Запустите приложение .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!