Validoinnin integrointi API-rajapintoihin
Palauttakaa selkeitä validointivirheiden vastauksia.
Validoinnin integrointi API-rajapintoihin on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 4 oppituntia.
FluentValidationin liittäminen ASP.NET Coreen
Rekisteröikää validaattorit riippuvuusinjektioon, jotta pyynnöt voidaan validoida automaattisesti. AddValidatorsFromAssembly-apufunktio käy kokoonpanon läpi ja rekisteröi kaikki löytämänsä validaattorit.
using FluentValidation;
builder.Services
.AddValidatorsFromAssemblyContaining<CustomerValidator>();Automaattinen validoinnin väliohjelmisto
Moderni FluentValidation suosii eksplisiittistä validointia, mutta voitte ottaa käyttöön automaattisen validoinnin, joka kytkeytyy mallin sidontaan ja hylkää virheelliset pyynnöt ennen toiminnon suorittamista.
dotnet add package FluentValidation.AspNetCore
builder.Services.AddFluentValidationAutoValidation();DI:stä ratkaistavat validaattorit
Koska validaattorit rekisteröidään DI:n avulla, ne voivat injektoida palveluita, kuten repositorioita. Näin tietokantaan perustuvat asynkroniset säännöt toimivat saumattomasti API:ssanne.
public class UserValidator : AbstractValidator<UserRequest>
{
public UserValidator(IUserRepository repo)
{
RuleFor(u => u.Email)
.MustAsync(async (e, ct) => !await repo.ExistsAsync(e));
}
}Eksplisiittinen validointi endpointissa
Monet tiimit suosivat eksplisiittistä validointia selkeyden vuoksi. Injektoikaa IValidator<T> ja kutsukaa sitä käsittelijän alussa.
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();
});Mikä ProblemDetails on
ProblemDetails (RFC 7807) on HTTP-virhevastausten standardoitu JSON-muoto. Se sisältää kenttiä, kuten type, title, status ja detail, joten asiakkaat saavat ennakoitavan virherakenteen.
{
"type": "https://tools.ietf.org/html/rfc7231",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": { "Email": ["Email is required."] }
}ValidationProblemDetails
Validointivirheissä ASP.NET Core käyttää ValidationProblemDetails-tyyppiä, joka laajentaa ProblemDetailsia errors-sanakirjalla. Sanakirja yhdistää kunkin kentän sen virheilmoituksiin.
return Results.ValidationProblem(result.ToDictionary());
// Produces a 400 ValidationProblemDetails responseFluentValidation-tulosten muuntaminen
ToDictionary()-laajennus muuntaa ValidationResult-tuloksen field -> messages -sanakirjaksi, jota ValidationProblem odottaa.
var result = await validator.ValidateAsync(request);
if (!result.IsValid)
{
IDictionary<string, string[]> errors = result.ToDictionary();
return Results.ValidationProblem(errors);
}ProblemDetails-tulosteen mukauttaminen
Käyttäkää AddProblemDetails-metodia ja mukauttajaa kaikkien virhevastausten täydentämiseen, esimerkiksi jäljitystunnuksen lisäämiseen vianmääritystä varten.
builder.Services.AddProblemDetails(options =>
{
options.CustomizeProblemDetails = ctx =>
ctx.ProblemDetails.Extensions["traceId"] =
ctx.HttpContext.TraceIdentifier;
});Validointi MVC-ohjaimissa
Kun automaattinen validointi on käytössä ja käytössä on [ApiController], ohjaimen toiminnot palauttavat virheellisen pyynnön yhteydessä automaattisesti myös ValidationProblemDetails-tiedot, joten muoto on yhdenmukainen kaikissa päätepisteissä.
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpPost]
public IActionResult Create(UserRequest request) => Ok();
}Validointisuodatin Minimal API -rajapinnoille
Voitte keskittää eksplisiittisen validoinnin päätepistesuodattimeen, jolloin jokainen käsittelijä pysyy selkeänä.
app.MapPost("/users", (UserRequest r) => Results.Ok())
.AddEndpointFilter<ValidationFilter<UserRequest>>();Automaattisen ja eksplisiittisen validoinnin valinta
Automaattinen validointi on kätevää, mutta piilottaa validointivaiheen. Eksplisiittinen validointi vaatii enemmän koodia, mutta tekee toiminnan näkyväksi ja helpottaa testaamista. Monet tiimit valitsevat eksplisiittisen validoinnin ja jaetun suodattimen, jolloin saadaan molempien parhaat puolet.
Pikatarkistus
Testatkaa API-validoinnin integrointi.
Kertaus
Validoinnin integrointi tarkoittaa validaattorien rekisteröimistä AddValidatorsFromAssembly-menetelmällä, automaattisen validoinnin valinnaista käyttöönottoa sekä virheiden palauttamista ValidationProblemDetails-tietoina käyttämällä Results.ValidationProblem(result.ToDictionary())-kutsua. DI:n ansiosta validaattorit voivat käyttää tietovarastoja asynkronisiin sääntöihin, ja voitte mukauttaa ProblemDetails-tietoja tai käyttää päätepistesuodattimia käsittelijöiden pitämiseksi selkeinä.
Opi C# tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 93
- Oppitunnit
- 346
Usein kysytyt kysymykset
Onko oppitunti ”Validoinnin integrointi API-rajapintoihin” ilmainen?
Kyllä – oppitunnin ”Validoinnin integrointi API-rajapintoihin” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Validoinnin integrointi API-rajapintoihin”?
Palauttakaa selkeitä validointivirheiden vastauksia. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Validoinnin integrointi API-rajapintoihin”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?
Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Data Annotation -validointi
- FluentValidation-säännöt
- Mukautetut ja ehdolliset säännöt
- Validoinnin integrointi API-rajapintoihin