Wpis z mikrobloga

Hej, szybkie pytanko. Mam tak mały backend, który ma tylko kilka endpointów ( Używam #nestjs i #swagger ). Mam plik konfiguracyjny yaml, który mówi trochę o możliwościach jakie endpointy mają.
Np.

sortFields:
- name
- date
filterFields:
- name

Chodzi o to, że baza danych też jest tworzona na podstawie pliku konfiguracyjnego, a więc pola mogą mieć np. inne nazwy.

Chodzi o to, że ten plik jest dość elastyczny i zawiera całkiem sporo informacji. Chciałbym zamiast wyrzucać błąd przy req do API to aby swagger wypisywał możliwe wartości. Problem jest taki, że całość opiera się na dekoratorach w kontrolerze. Czy jest możliwość zrobienia takich dynamicznych parametrów do swaggera bez orania połowy frameworka? Jakiś dynamiczny loader albo coś w tym stylu?

#backend #typescript
  • 4
Hej, trochę słabo opisałeś ten problem. Co jest na podstawie tego pliku yaml tworzone? API? Baza? Jedno i drugie? O jakie "dynamiczne parametry do swaggera" pytasz?

Generalnie w większości enterprise-owych rozwiązań możesz pisać modele dziedzinowe, na ich podstawie modele bazodanowe (encje) i interfejsy/DTO dla endpointów. Potem z automatu masz zmiany w bazie przez ORM i automatyczne generowanie schematu swaggerowego. Wygląda to raczej podobnie i w NestJS i w C# i w Javie.
  • 0
@burns: dzięki. Ten Yaml tworzy jedno i drugie. Nie są tam całe bazy zdefiniowane, ale raczej coś w stylu feature, które mogą być załączone lub nie. Jeśli są wyłączone to obecnie swagger podpowiada błędne parametry. Np. mam PUT, który ma dodać nowy wpis do bazy i Swagger ma tam 5 pól, ale jeśli feature jest wyłączony to powinny być tylko 4 bo jedno pole nie ma sensu. Chciałbym aby kontroler ogarniał
Moim zdaniem to może być trochę trudne do zrobienia, bo swagger raczej jest generowany statycznie na podstawie typów, nie jakichś dynamicznych wartości. Chyba lepiej zrobić endpoint, który będzie zwracał te dostępne wartości dla klienta.