Apa yang baru dalam ASP.NET Core 10.0
Artikel ini menyoroti perubahan paling signifikan dalam ASP.NET Core 10.0 dengan tautan ke dokumentasi yang relevan.
Artikel ini akan diperbarui setiap kali rilis pratinjau baru tersedia. Lihat halaman pengumuman Asp.Net Core hingga halaman ini diperbarui.
Blazor
Bagian ini menjelaskan fitur baru untuk Blazor.
parameter QuickGridRowClass
Aplikasikan kelas stylesheet ke baris grid berdasarkan item baris menggunakan parameter RowClass
yang baru. Dalam contoh berikut, metode GetRowCssClass
dipanggil pada setiap baris untuk menerapkan kelas lembar gaya secara kondisional berdasarkan item baris:
<QuickGrid ... RowClass="GetRowCssClass">
...
</QuickGrid>
@code {
private string GetRowCssClass(MyGridItem item) =>
item.IsArchived ? "row-archived" : null;
}
Untuk informasi selengkapnya, lihat komponen ASP.NET Core Blazor 'QuickGrid'.
Skrip Blazor sebagai aset web statis
Dalam rilis .NET sebelumnya, skrip Blazor disajikan dari sumber daya yang disematkan dalam kerangka kerja bersama ASP.NET Core. Di .NET 10 atau yang lebih baru, skrip Blazor disajikan sebagai aset web statis dengan kompresi dan sidik jari otomatis.
Untuk informasi selengkapnya, lihat sumber daya berikut ini:
Sorotan pola rute
Atribut [Route]
sekarang mendukung penyorotan sintaks rute untuk membantu memvisualisasikan struktur templat rute:
SignalR
Bagian ini menjelaskan fitur baru untuk SignalR.
Antarmuka Pemrograman Aplikasi Minimalis
Bagian ini menjelaskan fitur baru untuk API minimal.
OpenAPI
Bagian ini menjelaskan fitur baru untuk OpenAPI.
Dukungan OpenAPI 3.1
ASP.NET Core telah menambahkan dukungan untuk menghasilkan dokumen OpenAPI versi 3.1 di .NET 10. Terlepas dari peningkatan versi minor, OpenAPI 3.1 merupakan pembaruan signifikan untuk spesifikasi OpenAPI, khususnya dengan dukungan penuh untuk draf Skema JSON 2020-12.
Beberapa perubahan yang akan Anda lihat dalam dokumen OpenAPI yang dihasilkan meliputi:
- Jenis nullable tidak lagi memiliki properti
nullable: true
dalam skema. - Alih-alih properti
nullable: true
, mereka memiliki kata kuncitype
yang nilainya adalah array yang menyertakannull
sebagai salah satu jenisnya.
Dengan fitur ini, versi OpenAPI default untuk dokumen yang dihasilkan3.1
. Versi dapat diubah dengan mengatur secara eksplisit properti OpenApiVersion dari OpenApiOptions dalam parameter delegasi configureOptions
dari AddOpenApi.
builder.Services.AddOpenApi(options =>
{
// Specify the OpenAPI version to use.
options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0;
});
Saat membuat dokumen OpenAPI pada waktu build, versi OpenAPI dapat dipilih dengan mengatur --openapi-version
dalam item MSBuild OpenApiGenerateDocumentsOptions
.
<!-- Configure build-time OpenAPI generation to produce an OpenAPI 3.0 document. -->
<OpenApiGenerateDocumentsOptions>--openapi-version OpenApi3_0</OpenApiGenerateDocumentsOptions>
Dukungan OpenAPI 3.1 utama ditambahkan dalam PR berikut.
Perubahan besar OpenAPI 3.1
Dukungan untuk OpenAPI 3.1 memerlukan pembaruan ke pustaka OpenAPI.NET yang mendasar ke versi utama baru, 2.0. Versi baru ini memiliki beberapa perubahan signifikan dari versi sebelumnya. Perubahan yang merusak dapat memengaruhi aplikasi yang memiliki transformator dokumen, operasi, atau skema.
Salah satu perubahan paling signifikan adalah bahwa kelas OpenApiAny
telah dihilangkan demi menggunakan JsonNode
secara langsung. Transformator yang menggunakan OpenApiAny
perlu diperbarui untuk menggunakan JsonNode
. Perbedaan berikut menunjukkan perubahan transformator skema dari .NET 9 ke .NET 10:
options.AddSchemaTransformer((schema, context, cancellationToken) =>
{
if (context.JsonTypeInfo.Type == typeof(WeatherForecast))
{
- schema.Example = new OpenApiObject
+ schema.Example = new JsonObject
{
- ["date"] = new OpenApiString(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd")),
+ ["date"] = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"),
- ["temperatureC"] = new OpenApiInteger(0),
+ ["temperatureC"] = 0,
- ["temperatureF"] = new OpenApiInteger(32),
+ ["temperatureF"] = 32,
- ["summary"] = new OpenApiString("Bracing"),
+ ["summary"] = "Bracing",
};
}
return Task.CompletedTask;
});
Perhatikan bahwa perubahan ini diperlukan bahkan ketika hanya mengonfigurasi versi OpenAPI ke 3.0.
OpenAPI di Yaml
ASP.NET sekarang mendukung penyajian dokumen OpenAPI yang dihasilkan dalam format YAML. YAML bisa lebih ringkas daripada JSON dengan menghilangkan kurung kurawal dan tanda kutip ketika bisa disimpulkan. YAML juga mendukung string multibaris, yang dapat berguna untuk deskripsi panjang.
Untuk mengonfigurasi aplikasi untuk melayani dokumen OpenAPI yang dihasilkan dalam format YAML, tentukan titik akhir dalam panggilan MapOpenApi dengan akhiran ".yaml" atau ".yml", seperti yang ditunjukkan dalam contoh berikut:
app.MapOpenApi("/openapi/{documentName}.yaml");
Dukungan untuk:
- YAML saat ini hanya tersedia untuk OpenAPI yang diakses melalui endpoint OpenAPI.
- Membuat dokumen OpenAPI dalam format YAML pada waktu build akan ditambahkan dalam pratinjau mendatang.
Lihat PR ini yang menambahkan dukungan untuk menyajikan dokumen OpenAPI yang dihasilkan dalam format YAML.
Deskripsi respons pada ProducesResponseType
ProducesAttribute, ProducesResponseTypeAttribute, dan ProducesDefaultResponseType atribut sekarang menerima parameter string opsional, Description
, yang akan mengatur deskripsi respons. Berikut adalah contohnya:
[HttpGet(Name = "GetWeatherForecast")]
[ProducesResponseType<IEnumerable<WeatherForecast>>(StatusCodes.Status200OK, Description = "The weather forecast for the next 5 days.")]
public IEnumerable<WeatherForecast> Get()
{
Dan OpenAPI yang telah dihasilkan:
"responses": {
"200": {
"description": "The weather forecast for the next 5 days.",
"content": {
kontribusi Komunitas oleh Sander ten Brinke🙏
Autentikasi dan otorisasi
Bagian ini menjelaskan fitur baru untuk autentikasi dan otorisasi.
Lain-lain
Bagian ini menjelaskan berbagai fitur baru di ASP.NET Core 10.0.
Dukungan yang lebih baik untuk menguji aplikasi dengan pernyataan tingkat atas
.NET 10 sekarang memiliki dukungan yang lebih baik untuk menguji aplikasi yang menggunakan pernyataan tingkat atas . Sebelumnya pengembang harus menambahkan public partial class Program
secara manual ke file Program.cs
sehingga proyek pengujian dapat mereferensikan Program class
.
public partial class Program
diperlukan karena fitur pernyataan tingkat atas di C# 9 menghasilkan Program class
yang dideklarasikan sebagai internal.
Dalam .NET 10, generator sumber digunakan untuk menghasilkan deklarasi public partial class Program
jika programmer tidak menyatakannya secara eksplisit. Selain itu, penganalisis ditambahkan untuk mendeteksi kapan public partial class Program
dinyatakan secara eksplisit dan menyarankan pengembang untuk menghapusnya.
PR berikut berkontribusi pada fitur ini:
- PR 58199
- PR 58482
Mendeteksi apakah URL bersifat lokal menggunakan RedirectHttpResult.IsLocalUrl
Gunakan metode pembantu RedirectHttpResult.IsLocalUrl(url)
baru untuk mendeteksi apakah URL bersifat lokal. URL dianggap lokal jika berikut ini benar:
URL yang menggunakan jalur virtual "~/"
juga lokal.
IsLocalUrl
berguna untuk memvalidasi URL sebelum mengalihkannya untuk mencegah serangan pengalihan terbuka .
if (RedirectHttpResult.IsLocalUrl(url))
{
return Results.LocalRedirect(url);
}
Terima kasih @martincostello atas kontribusi ini!
Konten terkait
ASP.NET Core