Hoe vaak heb je dezelfde List/Get/Create/Update/Delete controllercode geschreven? In een typische ASP.NET Core API vermenigvuldigt deze boilerplate zich snel – 75 controllers die in wezen hetzelfde doen. Hazina’s Generic API Framework beëindigt deze herhaling.
De Oude Manier
// Dit zou je 75 keer schrijven...
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet] public async Task<IActionResult> List(...) { ... }
[HttpGet("{id}")] public async Task<IActionResult> Get(int id) { ... }
[HttpPost] public async Task<IActionResult> Create(ProductDto dto) { ... }
[HttpPut("{id}")] public async Task<IActionResult> Update(int id, ProductDto dto) { ... }
[HttpDelete("{id}")] public async Task<IActionResult> Delete(int id) { ... }
}
De Hazina Manier
[Route("api/[controller]")]
public class ProductsController : GenericEntityController<Product>
{
public ProductsController(IRepository<Product> repo) : base(repo) { }
}
Dat is alles. Je hebt nu:
GET /api/products– Lijst met paginering, filtering, sorteringGET /api/products/{id}– Ophalen op IDPOST /api/products– AanmakenPUT /api/products/{id}– Volledige updatePATCH /api/products/{id}– Gedeeltelijke updateDELETE /api/products/{id}– Zachte verwijderingPOST /api/products/bulk– Bulk aanmakenDELETE /api/products/bulk– Bulk verwijderenGET /api/products/count– TellenGET /api/products/exists/{id}– Bestaan controleren
Entiteit Definitie
using Hazina.API.Generic.Entities;
public class Product : EntityBase
{
public string Name { get; set; } = string.Empty;
public decimal Price { get; set; }
public string? Description { get; set; }
}
De EntityBase klasse geeft je automatisch Id, CreatedAt, en UpdatedAt.
Registratie
// In Program.cs
builder.Services.AddDbContext<AppDbContext>(options => ...);
builder.Services.AddGenericEntityApi<AppDbContext>();
// In de pipeline
app.UseAuthentication();
app.UseGenericEntityApi(); // Na authenticatie
Ingebouwde Paginering en Filtering
GET /api/products?page=1&pageSize=20&sort=price&order=desc&filter=name:contains:phone
Geen extra code nodig. Paginering, sortering en filtering zijn gratis beschikbaar voor elke entiteit.
In de volgende post verkennen we de verschillende entiteit basis klassen en wanneer je welke moet gebruiken.
Veelgestelde Vragen
Hazina Generic API stelt ontwikkelaars in staat om een volledige CRUD API te maken met slechts één regel code door gebruik te maken van een GenericEntityController. Dit elimineert de noodzaak om repetitieve controllercode voor elke entiteit te schrijven, wat de ontwikkelingstijd en boilerplate code aanzienlijk vermindert.
Hazina Generic API biedt ingebouwde paginering, filtering en sorteer mogelijkheden voor elke entiteit zonder extra code. Ontwikkelaars kunnen eenvoudig gegevensbeheer uitvoeren met functies zoals bulk aanmaken, zachte verwijdering en bestaanscontroles.
De EntityBase klasse in Hazina Generic API bevat automatisch eigenschappen zoals Id, CreatedAt en UpdatedAt voor entiteiten. Dit stroomlijnt het ontwikkelingsproces door essentiële metadata te bieden voor het beheren van entiteiten zonder extra code.
Om Hazina Generic API te registreren, voeg je de benodigde services toe in Program.cs door de DbContext te configureren en AddGenericEntityApi aan te roepen. Zorg er vervolgens voor dat je de middleware gebruikt met `app.UseGenericEntityApi()` na authenticatie in de request pipeline.