Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
ASP.NET Core поддерживает создание документов OpenAPI в приложениях на основе контроллера и минимальных API. Спецификация OpenAPI — это стандарт программирования, не зависящий от языка для документирования API HTTP. Этот стандарт поддерживается в приложениях ASP.NET Core с помощью сочетания встроенных API и библиотек с открытым кодом. В приложении существует три ключевых аспекта интеграции OpenAPI:
- Создание сведений о конечных точках в приложении.
- Сбор сведений в формате, который соответствует схеме OpenAPI.
- Предоставление созданного документа OpenAPI с помощью визуального интерфейса или сериализованного файла.
ASP.NET Приложения Core предоставляют встроенную поддержку создания сведений о конечных точках в приложении с помощью Microsoft.AspNetCore.OpenApi
пакета.
Следующий код создается шаблоном ASP.NET Core для минимального веб-API и использует стандарт OpenAPI:
using Microsoft.AspNetCore.OpenApi;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenApi();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateTime.Now.AddDays(index),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast");
app.Run();
internal record WeatherForecast(DateTime Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
В предыдущем выделенном коде:
-
AddOpenApi
регистрирует службы, необходимые для создания документов OpenAPI, в контейнер DI приложения. -
MapOpenApi
добавляет конечную точку в приложение для просмотра документа OpenAPI, сериализованного в JSON. Конечная точка OpenAPI ограничена средой разработки, чтобы свести к минимуму риск предоставления конфиденциальной информации и снизить уязвимости в рабочей среде.
пакет NuGet Microsoft.AspNetCore.OpenApi
;
Пакет Microsoft.AspNetCore.OpenApi
предоставляет следующие функции:
- Поддержка создания документов OpenAPI во время выполнения и доступа к ним через конечную точку приложения.
- Поддержка API-интерфейсов "преобразователя", позволяющих изменять созданный документ.
Чтобы использовать Microsoft.AspNetCore.OpenApi
пакет, добавьте его как PackageReference в файл проекта:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<PropertyGroup>
<OpenApiGenerateDocuments>true</OpenApiGenerateDocuments>
<OpenApiDocumentsDirectory>$(MSBuildProjectDirectory)</OpenApiDocumentsDirectory>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.*-*" />
<PackageReference Include="Microsoft.Extensions.ApiDescription.Server" Version="9.0.*-*">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
Дополнительные сведения о пакете Microsoft.AspNetCore.OpenApi
см. в статье "Создание документов OpenAPI".
пакет NuGet Microsoft.Extensions.ApiDescription.Server
;
Пакет Microsoft.Extensions.ApiDescription.Server
обеспечивает поддержку создания документов OpenAPI во время сборки и их сериализации.
Чтобы использовать Microsoft.Extensions.ApiDescription.Server
его, добавьте его как PackageReference в файл проекта.
Создание документов во время сборки включено, задав OpenApiGenerateDocuments
свойство.
По умолчанию созданный документ OpenAPI сохраняется в obj
каталоге, но можно настроить выходной каталог, задав OpenApiDocumentsDirectory
свойство.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<PropertyGroup>
<OpenApiGenerateDocuments>true</OpenApiGenerateDocuments>
<OpenApiDocumentsDirectory>$(MSBuildProjectDirectory)</OpenApiDocumentsDirectory>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.*-*" />
<PackageReference Include="Microsoft.Extensions.ApiDescription.Server" Version="9.0.*-*">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
API v. Операция API v. Конечная точка API
В следующих разделах описываются различия между API, конечной точкой API и операцией API в контексте документации ASP.NET Core и OpenAPI.
API (интерфейс программирования приложений)
API — это набор правил и протоколов для создания и взаимодействия с программными приложениями. Он определяет, как должны взаимодействовать различные компоненты программного обеспечения. В общем случае веб-разработка API обычно относится к веб-службе, которая предоставляет функциональные возможности по протоколу HTTP.
В ASP.NET Core API обычно создается с помощью контроллеров или минимальных API, обрабатывающих входящие HTTP-запросы и возвращаемые ответы.
Внутренние соглашения об именовании в ASP.NET Core иногда используют API по-разному. Например, в обозревателе API "ApiDescription" фактически представляет собой операцию API, а не полную службу API. Это различие отражает внутренние соглашения об именовании и иногда отличается от более широкого определения, используемого здесь.
Дополнительные сведения об обозревателе API см. в разделе "Общие сведения об APIExplorer" в ASP.NET Core .
Операция API
Операция API представляет определенное действие или возможность, которую предоставляет API. В ASP.NET Core это соответствует следующим:
- Методы действий контроллера в API в стиле MVC
- Обработчики маршрутов в минимальных API
Каждая операция определяется методом HTTP (GET
, POST
, PUT
и т. д.), путем, параметрами и ответами.
Конечная точка API
Конечная точка API — это конкретный URL-адрес:
- Это представляет определенный ресурс или функциональные возможности, предоставляемые API.
- Предоставляет точный адрес, в который клиент должен отправить HTTP-запрос, чтобы взаимодействовать с определенной операцией API.
Конечная точка — это сочетание базового URL-адреса API и определенного пути к требуемому ресурсу, а также поддерживаемых методов HTTP:
- Для API на основе контроллера конечные точки объединяют шаблон маршрута с контроллером и действием.
- Для минимальных API конечные точки явно определены с
app.MapGet()
,app.MapPost()
и так далее.
Например, конечная точка api/products/{id}
, поддерживающая следующие операции:
GET /api/products/{id}
PUT /api/products/{id}
PATCH /api/products/{id}
Delete /api/products/{id}
HEAD /api/products/{id}
Конечные точки часто включают параметры запроса, например GET /api/products?category=electronics&sort=price
Документация по OpenAPI
В контексте OpenAPI документация описывает API в целом, включая все конечные точки и операции. OpenAPI предоставляет структурированный способ документировать API- интерфейсы, что упрощает разработчикам понимание взаимодействия с ними.
Операции API — это основной фокус документации по OpenAPI. Спецификация OpenAPI упорядочивает документацию по операциям, которые группируются по путям (конечным точкам). Каждая операция описывается с такими сведениями, как параметры, текст запросов, ответы и многое другое. Этот структурированный формат позволяет средствам создавать клиентские библиотеки, заглушки сервера и интерактивную документацию автоматически.
В документе OpenAPI:
- Весь документ описывает API в целом
- Каждый элемент пути (например
/api/products/{id}
) представляет конечную точку - В каждом пути методы HTTP (
GET
,POST
,PUT
и т. д.) определяют операции. - Каждая операция содержит сведения о параметрах, тексте запроса, ответах и т. д.
Пример в формате JSON OpenAPI:
json{
"paths": {
"/api/products/{id}": { // This is the endpoint
"get": { // This is the operation
"summary": "Get a product by ID",
"parameters": [...],
"responses": {...}
},
"put": { // Another operation on the same endpoint
"summary": "Update a product",
"parameters": [...],
"responses": {...}
}
}
}
}
Сравнение операций API, конечных точек API и самого API
В следующей таблице перечислены различия между API, операцией API и конечной точкой API:
Понятие | Операция API | Конечная точка API |
---|---|---|
Определение | Логическое описание действия API: метод + путь + поведение | Фактически настроенный HTTP-маршрут, прослушивающий запросы |
Уровень | С концептуальной точки зрения, какие действия могут происходить? | Определите, какой URL-адрес и метод соответствуют |
Привязка к | Проектирование и спецификация API OpenAPI | маршрутизация ASP.NET Core во время выполнения |
Описывает | То, что делает API, например "создать продукт" | Где и как его вызвать, например , POST https://localhost:7099/api/products POST https://contoso.com/api/products |
В ASP.NET Core | Действия контроллера или минимальные методы API перед разрешением маршрутизации | Объекты конечных точек, определенные во время выполнения |
Исходный код OpenAPI ASP.NET Core на GitHub
Дополнительные ресурсы
Спецификация OpenAPI — это стандарт программирования, не зависящий от языка для документирования API HTTP. Этот стандарт поддерживается в минимальных API с помощью сочетания встроенных API и библиотек с открытым кодом. В приложении существует три ключевых аспекта интеграции OpenAPI:
- Создание сведений о конечных точках в приложении.
- Сбор сведений в формате, который соответствует схеме OpenAPI.
- Предоставление созданной схемы OpenAPI с помощью визуального интерфейса или сериализованного файла.
Минимальные API обеспечивают встроенную поддержку создания сведений о конечных точках в приложении с помощью Microsoft.AspNetCore.OpenApi
пакета. Для предоставления созданного определения OpenAPI через визуальный пользовательский интерфейс требуется сторонний пакет.
Сведения о поддержке OpenAPI в API на основе контроллеров см. в версии .NET 9 этой статьи.
ASP.NET Core