0Pricing
C# Academy · Pelajaran

Mengintegrasikan Validasi dengan API

Kembalikan respons kesalahan validasi yang rapi.

Mengintegrasikan Validasi dengan API adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Menghubungkan FluentValidation ke ASP.NET Core

Untuk memvalidasi permintaan secara otomatis, daftarkan validator Anda melalui injeksi dependensi. Pembantu AddValidatorsFromAssembly memindai sebuah rakitan dan mendaftarkan setiap validator yang ditemukan.

using FluentValidation;

builder.Services
    .AddValidatorsFromAssemblyContaining<CustomerValidator>();

Perangkat Perantara Validasi Otomatis

FluentValidation modern lebih mengutamakan validasi eksplisit, tetapi Anda dapat mengaktifkan validasi otomatis yang terhubung ke pengikatan model sehingga permintaan yang tidak valid ditolak sebelum tindakan Anda dijalankan.

dotnet add package FluentValidation.AspNetCore

builder.Services.AddFluentValidationAutoValidation();

Validator yang Diperoleh dari DI

Karena validator terdaftar melalui DI, validator dapat menginjeksikan layanan seperti repositori, sehingga aturan asinkron berbasis basis data dapat bekerja tanpa hambatan di API Anda.

public class UserValidator : AbstractValidator<UserRequest>
{
    public UserValidator(IUserRepository repo)
    {
        RuleFor(u => u.Email)
            .MustAsync(async (e, ct) => !await repo.ExistsAsync(e));
    }
}

Validasi Eksplisit di Titik Akhir

Banyak tim lebih menyukai validasi eksplisit karena lebih jelas. Injeksi IValidator<T>, lalu panggil validator tersebut di awal handler.

app.MapPost("/users", async (
    UserRequest request,
    IValidator<UserRequest> validator) =>
{
    var result = await validator.ValidateAsync(request);
    if (!result.IsValid)
        return Results.ValidationProblem(result.ToDictionary());
    return Results.Ok();
});

Apa Itu ProblemDetails?

ProblemDetails (RFC 7807) adalah format JSON standar untuk respons kesalahan HTTP. Format ini memiliki bidang seperti type, title, status, dan detail, sehingga klien memperoleh struktur kesalahan yang konsisten.

{
  "type": "https://tools.ietf.org/html/rfc7231",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": { "Email": ["Email is required."] }
}

ValidationProblemDetails

Untuk kegagalan validasi, ASP.NET Core menggunakan ValidationProblemDetails, yang memperluas ProblemDetails dengan kamus errors yang memetakan setiap bidang ke pesannya.

return Results.ValidationProblem(result.ToDictionary());
// Produces a 400 ValidationProblemDetails response

Mengonversi Hasil FluentValidation

Ekstensi ToDictionary() mengubah ValidationResult menjadi kamus field -> messages yang diperlukan oleh ValidationProblem.

var result = await validator.ValidateAsync(request);
if (!result.IsValid)
{
    IDictionary<string, string[]> errors = result.ToDictionary();
    return Results.ValidationProblem(errors);
}

Menyesuaikan Keluaran ProblemDetails

Gunakan AddProblemDetails dan penyesuai khusus untuk melengkapi setiap respons kesalahan, misalnya dengan menambahkan ID pelacakan untuk membantu penelusuran kesalahan.

builder.Services.AddProblemDetails(options =>
{
    options.CustomizeProblemDetails = ctx =>
        ctx.ProblemDetails.Extensions["traceId"] =
            ctx.HttpContext.TraceIdentifier;
});

Validasi pada Pengendali MVC

Dengan validasi otomatis yang diaktifkan dan [ApiController], tindakan pengendali juga otomatis mengembalikan ValidationProblemDetails ketika permintaan tidak valid, sehingga formatnya konsisten di seluruh titik akhir.

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpPost]
    public IActionResult Create(UserRequest request) => Ok();
}

Penyaring Validasi untuk API Minimal

Anda dapat memusatkan validasi eksplisit menggunakan penyaring titik akhir agar setiap penangan tetap ringkas.

app.MapPost("/users", (UserRequest r) => Results.Ok())
   .AddEndpointFilter<ValidationFilter<UserRequest>>();

Memilih Validasi Otomatis atau Eksplisit

Validasi otomatis memang praktis, tetapi menyembunyikan langkah validasi; validasi eksplisit lebih panjang, tetapi transparan dan lebih mudah diuji. Banyak tim memilih validasi eksplisit ditambah penyaring bersama untuk mendapatkan keunggulan keduanya.

Pemeriksaan Singkat

Uji integrasi validasi API.

Rangkuman

Mengintegrasikan validasi berarti mendaftarkan validator dengan AddValidatorsFromAssembly, mengaktifkan validasi otomatis jika diperlukan, dan mengembalikan kesalahan sebagai ValidationProblemDetails melalui Results.ValidationProblem(result.ToDictionary()). DI memungkinkan validator menggunakan repositori untuk aturan async, dan Anda dapat menyesuaikan ProblemDetails atau menggunakan penyaring titik akhir agar penangan tetap ringkas.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengintegrasikan Validasi dengan API” gratis?

Ya — teks lengkap “Mengintegrasikan Validasi dengan API” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengintegrasikan Validasi dengan API”?

Kembalikan respons kesalahan validasi yang rapi. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Mengintegrasikan Validasi dengan API” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Validasi Anotasi Data
  2. Aturan FluentValidation
  3. Aturan Kustom dan Kondisional
  4. Mengintegrasikan Validasi dengan API
← Kembali ke C# Academy