Hazina Generic API: Build a Full CRUD API in One Line of Code
Hazina Framework

Hazina Generic API: Bouw een Volledige CRUD API met Eén Regel Code

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, sortering
  • GET /api/products/{id} – Ophalen op ID
  • POST /api/products – Aanmaken
  • PUT /api/products/{id} – Volledige update
  • PATCH /api/products/{id} – Gedeeltelijke update
  • DELETE /api/products/{id} – Zachte verwijdering
  • POST /api/products/bulk – Bulk aanmaken
  • DELETE /api/products/bulk – Bulk verwijderen
  • GET /api/products/count – Tellen
  • GET /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

Hoe vereenvoudigt Hazina Generic API CRUD-operaties in ASP.NET Core?

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.

Welke ingebouwde functies biedt Hazina Generic API?

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.

Wat is de EntityBase klasse in Hazina Generic API?

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.

Hoe registreer ik Hazina Generic API in mijn ASP.NET Core applicatie?

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.

Terug naar overzicht
ENNL