Mam mała rozkminkę, otóż mam do realizacji mały projekt:
- appka mobilna - prawdopodobnie KMM (ios+android, może i web)
- appka webowa - zarządzanie treścią, userami
- backend - CRUD - użytkownicy, jakiś cms, wysyłanie notyfikacji/sms
- przechowywanie video/zdjęć - tutaj pewnie 3rd-party - vimeo

Założenia
@KwasowyProktolog10kJava: zrobiłem apke w flutter+firebase+cloudfunctions. Flutter troche słaby wydajnościowo na starszych urzadzeniach i nie jest SEO friendly, reszta spoko, najwiekszy koszt to cloud storage(duzo zdjęc) no i cloud function tez żrą sporo, lepiej odrazu z klienta uderzać do bazy jak się da to wtedy wychodzi jak za darmo.
  • Odpowiedz
Hej. Chcę wykorzystać autoryzacją za pomocą oAuth, grant type: password (tak wiem, że nie zalecane).
Chcę to zrobić na starszej wersji Springa (4), więc nie mam tutaj do czynienia z typowym oauth clientem, managerem itp. i innymi fajnymi rzeczami w spring 5 czy 6.
Działam na obiekcie OAuth2RestTemplate.
I generalnie, token mój ma żywotność 30 minut i jak robię requesty do 30 minut to używa tego samego tokena, ale po 30 minutach, zamiast użyć grant type refresh token (tak, dostaję też z powrotem refresh token jak pytam o access token za 1. razem ), znow uzywa grant type: password :/

Ktoś coś ?
Milo900 - Hej. Chcę wykorzystać autoryzacją za pomocą oAuth, grant type: password (ta...

źródło: image

Pobierz
@Milo900: za dużo oczekujesz, że spring zrobi za ciebie. Złap wyjątek, obsłuż go autoryzując się jeszcze raz, samemu ustawiając refresh token zamiast password. Poza tym jwt możesz odczytać, dekodując z base64. W nagłówku będziesz miał ważność tokenu i nawet nie musisz łapać wyjątku, wystarczy że przed wysłaniem requestu sprawdzisz czy token jeszcze nie wygasł (albo czy nie wygaśnie w ciągu np. 1-10 sek :) ), jak wygasł (lub niedługo wygaśnie)
  • Odpowiedz
✨️ Obserwuj #mirkoanonim
Co trzeba umieć, żeby dostać się na staż z javy, albo chociaż DARMOWE praktyki w jakimś januszexie? Muszę odbyć praktyki na studiach, a obecna sytuacja na rynku jest przynajmniej godna pożałowania. W ciągu ostatniego miesiąca chodziłem na targi pracy i ofert było tyle co kot napłakał, zostawiłem CV o ile w ogóle na to pozwalali, oczywiście zero odzewu. Mam świadomość, że projekty w moim portfolio nie są najlepsze na świecie, ale nie są to też aplikacje typu kalkulator. Obecnie uczę się Springa i dopiero stawiam pierwsze projekty, aczkolwiek patrząc na oferty prawie nigdzie tego wprost nie wymagają, jak już to od juniora i nie wiem czy to nie jest overkill

#pracait #it #java #spring #programowanie #naukaprogramowania #korposwiat #studia #studbaza

Mam w swojej aplikacji trzy role i chciałbym przetestować czy zostanie zwrócony odpowiedni błąd jeśli użytkownik nie ma roli admina i próbuje strzelić na endpoint dla admina. W testach mam porobione metody np. sendRequestAsUser, która wyciąga użytkownika z rolą USER z bazy, generuje JWT i zwraca token jako String. Pierwsze co przyszło mi do głowy to napisanie testu sparametryzowanego żeby nie powtarzać kodu, ale tutaj pojawia się problem, bo do adnotacji MethodSource
W gwoli jasności, to możliwe jest przekazanie niestatycznej metody do @MethodSource zmieniając cykl życia testu adnotacją - @TestInstance(PER_CLASS).

Możliwe, że twoją weryfikację da się zrealizować jeszcze łatwiej (bez bazy danych). Z MockMvc mogłoby to wyglądać w następujący sposób: mockMvc.perform(get(...).with(SecurityMockMvcRequestPostProcessors.user().roles(Role.ADMIN))
więc @MethodSource mógłby parametryzować Role albo cały RequestPostProcessor. Tutaj będzie zwykły Springowy User ale tych RequestPostProcessor jest sporo (są też związane z OAuth2).

Jeżeli chcesz WebTestClient to tam to się nazywa mutator (interfejs bazowy WebTestClientConfigurer
  • Odpowiedz
  • 0
@Smevios:

Ta adnotacja @TestInstance(PER_CLASS) może mi się przydać, dzięki.

Zrobiłem sobie sparametryzowany test z wykorzystaniem MockMvc i w sumie działa to okey. Są zwolennicy używania MockMvc, jak i są przeciwnicy. Ja jeszcze nie zagłębiałem się w problemy z
  • Odpowiedz
Chcę stworzyć metodę w springowym kontrolerze, z endpointem pod który wyślę dużo danych (dostałem jsona z 20 polami, ale może być ich więcej w przyszłości). i te dane prześlę dalej robiąc calla do zewnętrznego api żeby wyciągnąć jakieś tam dane biznesowe.

No i tu pytanie. Mówią, że GET służy do pobierania danych a POST tylko do zmiany stanu. Ale raczej nie jest to bezpieczne wysyłać te dane w urlu, co wtedy? Można
@mirek_dev: GET może mieć body

Niestety nie jest to dobrym pomysłem bo dużo bibliotek / serwerów / proxy HTTP nadinterpretuje specyfikację (lub zostało zakodowana na bazie nieaktualnej, sprzed 2014) i potrafi robić różne dziwne rzeczy jak np. ignorować body w GET albo nie pozwala go dodać po stronie klienta itp. - jeśli tak jest to jest to radosna twórczość tychże bibliotek, bo obecnie obowiązująca specyfikacja HTTP nie zabrania.

A payload
  • Odpowiedz
Mirasy chciałem napisać integracyjny test uderzając pod dany endpoint w controllerze gdzie używam spring webfluxa i w którymś z kolei serwisie uderzam do dwóch zewnętrznych apek. I właśnie te dwa calle chciałem zmockować, ale otrzymuję timeout. Korzystam z WebTestClient i MockWebServer.
Tutaj więcej szczegółów i kod. Pomoże ktoś? Bo siedzę już którąś godzinę nad tym ( ͡° ʖ̯ ͡°)
https://stackoverflow.com/questions/77957328/mocking-webclient-response-in-integration-test-using-mockwebserver-or-alternativ

#spring #springboot #programista15k
@mirek_dev: akurat z webfluxa nie korzystałem nigdy. Próbowałeś na próbę użyć jakiegoś standardowego, niereaktywnego rest clienta?
To co opisał @farowy to też rozwiązanie, ale to już znacznie więcej roboty, żeby później to jeszcze osetapować na środowisku testowym itp
  • Odpowiedz
@Nofenak: domyślną daj publiczna, bez nazywania czyli na przykład /products albo /orders.

Jak chcesz żeby użytkownicy z innymi rolami dostawali inne zasoby, to wtedy dorzuć endpointy pod ten typ użytkownika: /admin/products albo /admin/orders
  • Odpowiedz
@Nofenak: Imho największy sens ma dzielenie według konsumenta API. Np. jeśli masz publiczne API, API pod frontend użytkownika i pod frontend admina, to powinny mieć one własne ścieżki. Wtedy masz największą elastyczność przy zmianie poszczególnych endpointów i wiesz na których konsumentów wpłyną te zmiany. Dodatkowo można pod każdego konsumenta ustawić stosowne nagłówki, caching, itp.
  • Odpowiedz
Cześć,
stworzyłem sobie klasę pomocniczą do rejestracji w której trzymam jsony:

public class RegistrationControllerHelper {
public static final String validCredentials =
"{\"username\": \"New\", \"email\": \"new@mail.com\", \"password\": \"Password#3\"}";
@Kamishimi:
1. Nie tworzyłbym żadnych Helperów - co taka klasa oznacza? Sam widzisz, że nie do końca wiesz co ona robi i tak ją nazwałeś ( ͡° ͜ʖ ͡°)
2. Jeżeli jest to używane tylko przez test to dałbym to do klasy testowej
3. W nowszej wersji Java możesz użyć """ aby zrobić wielolinijkowy String i wtedy nie bedziesz musiał escepować \"
4. Nie wiem jaka jest logika biznesowa, ale zazwyczaj nie wysyłamy Stringów tylko klasę któa jest parsowana na json. Jeżeli się da to stworzyłbym klasę która trzyma te pola.
5. Jak już koniecznie chcesz to dać do
  • Odpowiedz
@Kamishimi:
1. Dalej nie widzę sensu wydzielanai osobnej klasy

new RegisterRequest("New", "new@mail.com", "Password#3");
to nie jest jakaś skomplikowana logika którą należy wydzielić, tylko integralna część testu
2. Jak już chcesz coś wydzielac to raczej
  • Odpowiedz
Cześć,
bawię się trochę w refactor testów w celu zwiększenia ich czytelności. Miałbym dwa pytania, zobrazujmy sobie je na przykładzie.
Oto klasa którą testuję:

@Component
class CookieDeleterImpl implements CookieDeleter
zainteresowałem się spring webflux oraz jego functional api i jakieś takie chu*owe to się wydaje, ale może mam do tego złe podejście? zamiast czytelnych deklaracji endpointów z jawnie zadeklarowanymi parametrami i zwrotką mam jakieś routingi i handlery bez jawnych typów. bez wczytywania się w kod nie wiadomo co jaki endpoint przyjmuje i co zwraca. to trochę tak jakby się cofnąć w czasie z typów generycznych do typów, które po prostu przechowują Object,
@ly000: Ogólnie to bym chyba odpuścił webflux, bo wraz z nadejściem Project Loom (Java 21) mamy wirtualne wątki, które częściowo rozwiązują problemy które ma rozwiązywać webflux

  • Odpowiedz
  • 0
@Saly:

a handler nie jest mocno typowany? Nie rozumiem gdzie jest problem. Możesz podać przykład z kodem?

no nie jest w tym sensie, że masz ServerResponse i ServerRequest, które mogą przechowywać wszystko. musisz się wczytać w definicję metody, żeby sprawdzić czego oczekuje dany endpoint i co zwraca.

w podejściu z kontrolerem miałbyś coś w
  • Odpowiedz
Cześć, potrzebuję pomocy. Pracuję nad konfiguracją Spring Security, która jest skupiona na zabezpieczaniu endpointów z podziałem na role: USER i ADMIN. Utworzyłem endpoint DELETE "/api/users/{userId}", który jest dostępny tylko dla roli ADMIN. Napisałem testy z użyciem bazy danych, aby sprawdzić, czy wszystko działa poprawnie. Jednakże, dowiedziałem się, że takie testy nie powinny być zależne od bazy danych i powinny być izolowane. Czy moglibyście doradzić mi, jak najlepiej przetestować te konfiguracje bez angażowania
Potrzebuję pobrać miejsca na seans w formie DTO (Spring Data JPA). Jedno pole - isFree zależy od tego czy na dane miejsce jest już zarezerwowany bilet.
Sala ma przypisane miejsca, seans sale a bilet seans i miejsce. Chat GPT podał coś takiego:

@query("SELECT new com.cinema.tickets.application.queries.dto.SeatDto(s.rowNumber, s.number, " +
"CASE WHEN (SELECT COUNT(t) FROM Ticket t WHERE t.seatId = s.id) > 0 THEN false ELSE true END) " +
"FROM Seat s WHERE s.hallId = (SELECT sc.hallId FROM Screening sc WHERE sc.id = :screeningId)")
✨️ Szkolenie Live: Własny Web Framework w Java! Poznaj ServerSocket i HttpHandler ✨️

Odkryj, jak samodzielnie stworzyć i wykorzystać framework webowy w Javie.
Podczas szkolenia:
✅ Zrozumiesz mechanizmy obsługi żądań HTTP w czystej Javie, kluczowe dla tworzenia aplikacji internetowych,
✅ Zobaczysz, jak możliwe jest projektowanie i implementacja własnego frameworka webowego, od podstaw,
SoftBull - ✨️ Szkolenie Live: Własny Web Framework w Java! Poznaj ServerSocket i Http...

źródło: wlasny-java-web-framework

Pobierz
  • 0
@nad__czlowiek: JavaEE jest mi całkiem dobrze znana, gdyż sam spędziłem w niej trochę śmiesznych, a momentami bolesnych lat. I jestem z tych, którzy tworzyli web appki z wykorzystaniem JSF/PrimeFaces - więc potwierdzam plotki ( ͡° ͜ʖ ͡°) Ciekawe czasy, ale nie wiem czy chciałbym wracać. ¯\(ツ)/¯ Stack top-technologiczny dla Java Developerów kilkanaście lat temu był ciekawy...
Moje pominięcie JavaEE/JakartaEE było celowe, ponieważ temat dotyczy frameworków, a
  • Odpowiedz
✨️ Obserwuj #mirkoanonim
Pytanie do mirków #programista15k #java #spring oraz #programowanie #naukaprogramowania

Czy kojarzycie może jakiś dobry kurs pokazujący jak ktoś tworzy przykładową praktyczną apkę java + spring w chmurze? Taka która by np korzystała z AWS: S3, EC2, SQS/SNS, Aurora MySQL itd. Jest sporo kursów gdzie ktoś pokazuje od A do Z jak np tworzy pseudo sklep ecommerce z użyciem java, spring, hibernate, ale nie mogę znaleźć żadnego praktycznego kursu chmury poza materiałami do egzaminów.

Mam ponad 7 lat doświadczenia jako java dev, ale od pół roku nie idzie zmienić pracy, bo wstyd się przyznać ale do tej pory siedziałem w monolitach xD JavaEE, Spring, SQL, Hibenate - jak ludzie na rozmową słyszą że nie miałem praktycznego doświadczenia z chmurą, k8s oraz mikroserwisami to od razu mi dziękują.
W trakcie odpalania kilkudziesięciu springowych integracyjnych testów z Testcontainers, po 10 testach dostaję taki błąd:

org.springframework.dao.DataAccessResourceFailureException: Unable to acquire JDBC Connection [HikariPool-1 - Connection is not available, request timed out after 30003ms.] [n/a]
Szczegóły na 4programmers: https://4programmers.net/Forum/Java/370632-problem_z_testcontainers_przy_wielu_testach?p=1936802#id1936802
#java #spring #naukaprogramowania #programowanie #programista15k