Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
ASP.NET Core mendukung pembuatan dokumen OpenAPI di aplikasi API berbasis pengontrol dan minimal. Spesifikasi OpenAPI adalah standar bahasa-agnostik pemrograman untuk mendokumen API HTTP. Standar ini didukung di aplikasi ASP.NET Core melalui kombinasi API bawaan dan pustaka sumber terbuka. Ada tiga aspek utama untuk integrasi OpenAPI dalam aplikasi:
- Menghasilkan informasi tentang titik akhir di aplikasi.
- Mengumpulkan informasi ke dalam format yang cocok dengan skema OpenAPI.
- Mengekspos dokumen OpenAPI yang dihasilkan melalui UI visual atau file berseri.
ASP.NET Core menyediakan dukungan bawaan untuk menghasilkan informasi tentang titik akhir di aplikasi melalui Microsoft.AspNetCore.OpenApi
paket.
Kode berikut dihasilkan oleh templat API web minimal ASP.NET Core dan menggunakan 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);
}
Dalam kode yang disorot sebelumnya:
-
AddOpenApi
mendaftarkan layanan yang diperlukan untuk pembuatan dokumen OpenAPI ke dalam kontainer DI aplikasi. -
MapOpenApi
menambahkan titik akhir ke dalam aplikasi untuk melihat dokumen OpenAPI yang diserialisasikan ke JSON. Titik akhir OpenAPI dibatasi untuk lingkungan pengembangan untuk meminimalkan risiko mengekspos informasi sensitif dan mengurangi kerentanan dalam produksi.
Microsoft.AspNetCore.OpenApi
Paket NuGet
Paket ini Microsoft.AspNetCore.OpenApi
menyediakan fitur-fitur berikut:
- Dukungan untuk menghasilkan dokumen OpenAPI pada waktu proses dan mengaksesnya melalui titik akhir pada aplikasi.
- Dukungan untuk API "transformer" yang memungkinkan modifikasi dokumen yang dihasilkan.
Untuk menggunakan Microsoft.AspNetCore.OpenApi
paket, tambahkan sebagai PackageReference ke file proyek:
<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>
Untuk mempelajari selengkapnya tentang Microsoft.AspNetCore.OpenApi
paket, lihat Membuat dokumen OpenAPI.
Microsoft.Extensions.ApiDescription.Server
Paket NuGet
Paket ini Microsoft.Extensions.ApiDescription.Server
menyediakan dukungan untuk menghasilkan dokumen OpenAPI pada waktu build dan menserialisasikannya.
Untuk menggunakan Microsoft.Extensions.ApiDescription.Server
, tambahkan sebagai PackageReference ke file proyek.
Pembuatan dokumen pada waktu build diaktifkan dengan mengatur OpenApiGenerateDocuments
properti .
Secara default, dokumen OpenAPI yang dihasilkan disimpan ke obj
direktori, tetapi Anda dapat menyesuaikan direktori output dengan mengatur OpenApiDocumentsDirectory
properti .
<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. Operasi API v. Titik akhir API
Bagian berikut menjelaskan perbedaan antara API, titik akhir API, dan operasi API dalam konteks dokumentasi ASP.NET Core dan OpenAPI.
API (Antarmuka Pemrograman Aplikasi)
API adalah seperangkat aturan dan protokol untuk membangun dan berinteraksi dengan aplikasi perangkat lunak. Ini mendefinisikan bagaimana komponen perangkat lunak yang berbeda harus berkomunikasi. Dalam pengembangan web umum, "API" biasanya mengacu pada layanan web yang mengekspos fungsionalitas melalui HTTP.
Di ASP.NET Core, API biasanya dibangun menggunakan pengontrol atau API minimal, yang menangani permintaan HTTP masuk dan mengembalikan respons.
Konvensi penamaan internal ASP.NET Core terkadang menggunakan "API" dengan cara yang berbeda. Misalnya, di API Explorer, "ApiDescription" sebenarnya mewakili Operasi API daripada layanan API lengkap. Perbedaan ini mencerminkan konvensi penamaan internal dan terkadang berbeda dari definisi yang lebih luas yang digunakan di sini.
Lihat Pengenalan ApiExplorer di ASP.NET Core untuk informasi selengkapnya tentang API Explorer.
Operasi API
Operasi API mewakili tindakan atau kemampuan tertentu yang disediakan API. Dalam ASP.NET Core, ini sesuai dengan:
- Metode tindakan pengontrol dalam API bergaya MVC
- Penangan rute di API Minimal
Setiap operasi didefinisikan oleh metode HTTP-nya (GET
, , POST
, PUT
dll.), jalur, parameter, dan respons.
Titik Akhir API
Titik akhir API adalah URL tertentu:
- Itu mewakili sumber daya atau fungsionalitas tertentu yang diekspos oleh API.
- Menyediakan alamat yang tepat yang perlu dikirimi klien permintaan HTTP untuk berinteraksi dengan operasi API tertentu.
Titik akhir adalah kombinasi URL dasar API dan jalur tertentu ke sumber daya yang diinginkan, bersama dengan metode HTTP yang didukung:
- Untuk API berbasis pengontrol, titik akhir menggabungkan templat rute dengan pengontrol dan tindakan.
- Untuk API Minimal, titik akhir secara eksplisit didefinisikan dengan
app.MapGet()
,app.MapPost()
, dll.
Misalnya, endpoint api/products/{id}
yang mendukung operasi berikut:
GET /api/products/{id}
PUT /api/products/{id}
PATCH /api/products/{id}
Delete /api/products/{id}
HEAD /api/products/{id}
Titik akhir sering menyertakan parameter kueri, misalnya, GET /api/products?category=electronics&sort=price
Dokumentasi OpenAPI
Dalam konteks OpenAPI, dokumentasi menjelaskan API secara keseluruhan, termasuk semua titik akhir dan operasinya. OpenAPI menyediakan cara terstruktur untuk mendokumen API, sehingga pengembang lebih mudah memahami cara berinteraksi dengannya.
Operasi API adalah fokus utama dokumentasi OpenAPI. Spesifikasi OpenAPI mengatur dokumentasi menurut operasi, yang dikelompokkan menurut jalur (titik akhir). Setiap operasi dijelaskan dengan detail seperti parameter, badan permintaan, respons, dan banyak lagi. Format terstruktur ini memungkinkan alat untuk menghasilkan pustaka klien, stub server, dan dokumentasi interaktif secara otomatis.
Dalam dokumen OpenAPI:
- Seluruh dokumen menjelaskan API secara keseluruhan
- Setiap item jalur (seperti
/api/products/{id}
) mewakili titik akhir - Di bawah setiap jalur, metode HTTP (
GET
, ,POST
,PUT
dll.) menentukan operasi - Setiap operasi berisi detail tentang parameter, isi permintaan, respons, dll.
Contoh dalam format OpenAPI JSON:
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, operasi API, dan perbandingan titik akhir API
Tabel berikut ini meringkas perbedaan antara API, operasi API, dan titik akhir API:
Konsep | Operasi API | Titik Akhir API |
---|---|---|
Definisi | Deskripsi logis dari tindakan API: metode + jalur + perilaku | Rute HTTP yang sebenarnya dikonfigurasi untuk mendengarkan permintaan |
Tingkat | Secara konseptual, tindakan apa yang mungkin terjadi? | Secara spesifik, URL dan metode apa yang sesuai |
Terikat dengan | Desain/spesifikasi OPENAPI API | Routing ASP.NET Core pada waktu eksekusi |
Menjelaskan | Apa yang dilakukan API misalnya, "buat produk" | Di mana dan cara memanggilnya, misalnya, , POST https://localhost:7099/api/products POST https://contoso.com/api/products |
Dalam ASP.NET Core | Tindakan pengontrol atau metode API Minimal, sebelum perutean diselesaikan | Objek titik akhir ditentukan pada runtime |
ASP.NET kode sumber Core OpenAPI di GitHub
Sumber Tambahan
Spesifikasi OpenAPI adalah standar bahasa-agnostik pemrograman untuk mendokumen API HTTP. Standar ini didukung dalam API minimal melalui kombinasi API bawaan dan pustaka sumber terbuka. Ada tiga aspek utama untuk integrasi OpenAPI dalam aplikasi:
- Menghasilkan informasi tentang titik akhir di aplikasi.
- Mengumpulkan informasi ke dalam format yang cocok dengan skema OpenAPI.
- Mengekspos skema OpenAPI yang dihasilkan melalui UI visual atau file berseri.
API minimal menyediakan dukungan bawaan untuk menghasilkan informasi tentang titik akhir dalam aplikasi melalui Microsoft.AspNetCore.OpenApi
paket. Mengekspos definisi OpenAPI yang dihasilkan melalui UI visual memerlukan paket pihak ketiga.
Untuk informasi tentang dukungan untuk OpenAPI di API berbasis pengontrol, lihat versi .NET 9 dari artikel ini.
ASP.NET Core