Первая программа на ASP.NET Core
Первая программа на ASP.NET Core
Соберём минимальный REST API на C# — без БД и облака. Сложный пример с PostgreSQL и S3: 453.md. Обзор платформы: ASP.NET. UI: Blazor · MAUI.
Требования
- .NET SDK 8 или 9 (
dotnet --version) - Редактор: Visual Studio, Rider или VS Code + C# Dev Kit
Создание проекта
dotnet new webapi -n HelloApi -o HelloApi --use-controllers
cd HelloApi
dotnet run
Откройте https://localhost:7xxx/swagger (порт в консоли). Шаблон уже содержит sample controller.
Минимальный API (без контроллеров)
Удалите контроллеры и замените Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapGet("/health", () => Results.Ok(new { status = "ok" }));
app.MapGet("/hello/{name}", (string name) =>
Results.Ok(new { message = $"Hello, {name}!" }));
app.Run();
dotnet run
curl https://localhost:5001/health -k
curl https://localhost:5001/hello/World -k
Вариант с контроллером
Controllers/NotesController.cs:
using Microsoft.AspNetCore.Mvc;
namespace HelloApi.Controllers;
[ApiController]
[Route("api/[controller]")]
public class NotesController : ControllerBase
{
private static readonly List<Note> Notes = new();
[HttpGet]
public ActionResult<IEnumerable<Note>> GetAll() => Ok(Notes);
[HttpPost]
public ActionResult<Note> Create(NoteCreate dto)
{
var note = new Note { Id = Notes.Count + 1, Text = dto.Text };
Notes.Add(note);
return CreatedAtAction(nameof(GetAll), new { id = note.Id }, note);
}
}
public record Note(int Id, string Text);
public record NoteCreate(string Text);
Внедрение зависимостей
Services/IGreetingService.cs:
public interface IGreetingService
{
string Greet(string name);
}
public class GreetingService : IGreetingService
{
public string Greet(string name) => $"Hello, {name}!";
}
Program.cs:
builder.Services.AddSingleton<IGreetingService, GreetingService>();
app.MapGet("/greet/{name}", (string name, IGreetingService svc) =>
Results.Ok(new { message = svc.Greet(name) }));
Тестирование (xUnit)
dotnet new xunit -n HelloApi.Tests
dotnet add HelloApi.Tests reference HelloApi
dotnet add HelloApi.Tests package Microsoft.AspNetCore.Mvc.Testing
public class HealthTests : IClassFixture<WebApplicationFactory<Program>>
{
private readonly HttpClient _client;
public HealthTests(WebApplicationFactory<Program> factory)
{
_client = factory.CreateClient();
}
[Fact]
public async Task Health_ReturnsOk()
{
var res = await _client.GetAsync("/health");
res.EnsureSuccessStatusCode();
}
}
dotnet test
Публикация
dotnet publish -c Release -o ./publish
Запуск на сервере: dotnet HelloApi.dll или Docker-образ на базе mcr.microsoft.com/dotnet/aspnet.
Дальше
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). C# как язык платформы .NET - устройство проекта, роль `.cs`-файлов и базовые принципы организации кода. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Справочник-шпаргалка по конфигурациям в C — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел. Набор советов, правил, принципов и обычаев в разработке на этом языке. Кавычки, точки, запятые, скобки и прочие знаки препинания. Ключевые слова C# - назначение базовых конструкций языка и примеры их применения в типичном коде. Набор функций, которые включены в стандартную библиотеку языка. Пространства имён в C# - организация модулей, `file-scoped namespace` и поддержание чистой структуры кода. манипулировать данными (арифметические, логические, сравнительные операторы). Самый базовый способ ветвления — оператор if. Он проверяет условие и, если оно истинно (true), выполняет блок кода. Обработка исключений в C# - типы исключений, `try/catch/finally` и практики надежного кода. Платформо-зависимые исключения — например, PlatformNotSupportedException используется в кроссплатформенных API, когда функция недоступна на текущей ОС.C# - язык программирования платформы .NET
Что требуется знать перед началом изучения языка программирования C#
Справочник по конфигурациям в C#
Рекомендации по разработке на C#
Синтаксис и пунктуация в C#
Ключевые слова языка C#
Встроенные функции и методы C#
Пространства имён в C#
Управляющие конструкции и логические операторы
Условные выражения и ветвления
Обработка исключений в C#
Иерархия классов исключений в C#