Minimal APi czy api z controllerami

Minimal APi czy api z controllerami
DD
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad rok
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ę.

edytowany 1x, ostatnio: ddaawidd
Damian Korczowski
  • Rejestracja:około 5 lat
  • Ostatnio:dzień
  • Postów:108
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.

SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:12 miesięcy
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?

markone_dev
  • Rejestracja:około 3 lata
  • Ostatnio:2 dni
  • Postów:809
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:

Kopiuj
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ń.


Programujący korpo architekt chmurowy.
Udzielam konsultacji i szkoleń w obszarze szeroko pojętego cloud computingu (Azure, AWS) i architektury systemów IT. Dla firm i prywatnie.
DevOps to proces nie stanowisko.
edytowany 2x, ostatnio: markone_dev
Riddle
Administrator
  • Rejestracja:ponad 14 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Laska, z Polski
  • Postów:10032
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ść.

FR
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 11 godzin
  • Postów:30
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ń.

JU
  • Rejestracja:około 22 lata
  • Ostatnio:21 dni
  • Postów:5042
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.

MS
  • Rejestracja:ponad 10 lat
  • Ostatnio:4 minuty
  • Postów:309
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.


edytowany 1x, ostatnio: mstl
Zobacz pozostały 1 komentarz
MS
To już nas więcej niż programistów Delphi. Czas jakąś konferencję zorganizować!
markone_dev
No to ja też się przyznam, że tego używałem. Fajnie się tym generowało dynamiczne endpointy HTTP na podstawie configu w bazie.
somekind
Zaraz się okaże, że tylko ja nie miałem okazji tego używać. :D
JP
Chyba tak. Ja tez uzywalem. :)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)