Minimal APi czy api z controllerami

0

Zrobiłem kurs z webapi na asp net core 6, a na koniec pokazali Minimal API. Teraz gdy chce już pisać apke, to nie wiem która metoda ją zacząć robić. Proszę o poradę.

0

To zależy, do projektu one time prostego bez skomplikowanej logiki można użyć Minimal API.

Jeżeli piszesz coś co ma być rozbudowywane, ma też ewoluować, oraz ma byc skomplikowana logika biznesowa to oczywiście wybieramy klasyczne API z controllerami.

3
Damian Korczowski napisał(a):

Jeżeli piszesz coś co ma być rozbudowywane, ma też ewoluować, oraz ma byc skomplikowana logika biznesowa to oczywiście wybieramy klasyczne API z controllerami.

Tylko co tak na prawdę sposób konfigurowania endpointów ma do poziomu skomplikowania logiki biznesowej?

2

Z perspektywy architektury aplikacji to tak jak napisał @some_ONE Warstwa API powinna być cienką warstwą, która wywołuje serwisy aplikacyjne czy wysyła komendy/kwerendy do odpowiednich handlerów. Tutaj przykład z jednego z moich projektów:

app
  .MapPost("/admin/product", async ([FromBody] AddNewProduct request) => await Handle(request))
  .AddEndpointFilter<ValidationFilter<AddNewProduct>>();

Jednak to co jest istotne z punktu widzenia technologii to trzeba być świadomym pewnych ograniczeń Minimal API, które są opisane w dokumentacji, zależnie od wersji której używasz. .NET 6 to była padaka, w .NET 7 i 8 jest już dużo lepiej bo poprawili wiele rzeczy.

Ze swojej strony to mogę dodać brak dobrego wsparicia dla biblioteki NSwag przez co musiałem skorzystać ze Swashbuckle bo zamiast pisać kod, debugowałem framework i szukałem alternatywnych rozwiązań.

0
ddaawidd napisał(a):

Zrobiłem kurs z webapi na asp net core 6, a na koniec pokazali Minimal API. Teraz gdy chce już pisać apke, to nie wiem która metoda ją zacząć robić. Proszę o poradę.

Tak na prawdę to wszystko jedno, to jest tylko interfejs frameworka - nie ma większego znaczenia w kontekście całego projektu. Te same testy powinny przechodzić dla obu podejść.

0

Jeśli dobrze pamiętam, to ostatnio Czarek Walenciuk pokazywał Minimal API w kontekście podejścia Vertical Slices. Niestety, nie ma nagrania z tej prezentacji, ale wybór między Layered Architecture i Vertical Slices może być dobrym początkiem do rozważań.

0

Ja domyślnie wybieram zawsze klasyczne z kontrolerami. To minimal API jakoś do mnie nie przemawia. No i przy większych projektach może być uciążliwe.

2

Z ciekawostek, to używałem czegoś w stylu Minimal APIs zanim to było modne, a mianowicie frameworka NancyFx
Obecnie jest zarchiwizowany, ale wcześniej był to jeden z nielicznych frameworków webowych działających pod mono.net/Linux.
A co zabawniejsze w projekcie ktoś napisał rozszerzenie, które umożliwiało definiowane endpointów jak w klasycznym ASP.NET :)

Obecnie z nową składnią C#, akcje kontrolerów również umożliwiają bardzo zwięzłe sterowanie przepływem. Wszystko pewnie zależy jak bardzo nasza aplikacja jest rozbudowana i jak będzie rozwijana w przyszłości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1