Wyobraź sobie jeden URL, który przyjmuje parametr i zwraca dokładnie ten rekord z bazy danych, który go pasuje. Bez backendu, bez serwera, bez pisania kodu serwerowego. To jest możliwe w n8n i zajmuje mniej niż 10 minut. W tym artykule budujesz endpoint GET krok po kroku: webhook jako punkt wejścia, Data Tables Get rows jako baza, dynamiczne wyrażenie jako filtr i Postman do testowania. Po drodze rozwiązujemy też jeden praktyczny problem – czułość na wielkość liter – w dwóch wersjach: prostej i z kawałkiem JavaScript.
Jak działa endpoint GET w n8n?


Endpoint GET w n8n to workflow z węzłem Webhook skonfigurowanym na metodę GET, który na podstawie parametrów z URL przeszukuje dane i zwraca wynik. Kiedy wywołasz adres https://[twoja-instancja]/webhook/[sciezka]?name=Bart, n8n odbiera to zapytanie, wyciaga wartość Bart z parametrów URL, przeszukuje tabelę w Data Tables i odsyła pasujący rekord w formacie JSON.
Schemat jest prosty: Webhook (Trigger) odbiera zapytanie GET z parametrem w URL. Data Tables Get rows szuka rekordu z pasującą wartością. Wynik wraca do klienta, który zapytał.
Taki endpoint zachowuje sie jak najprostsze API do odczytu danych. Nie trzeba pisać backendu. n8n jest jednoczesnie serwerem i logiką aplikacji.
Fundamentem jest rozróżnienie z artykułu o webhookach w n8n: webhook GET dostarcza parametry w URL (Query Params), natomiast webhook POST niesie dane w ciele zapytania (Body). Tutaj pracujemy z GET i Query Params.
Krok po kroku: webhook GET i Data Tables Get rows
Zanim zbudujesz workflow, przygotuj tabelę z danymi. Jeśli nie wiesz jeszcze jak tworzyć tabele w Data Tables i zapisywać do nich rekordy, zacznij od artykułu o formularzu n8n i Data Tables.
Utwórz tabelę w Data Tables
Jeśli przeszedłeś przez artykuł o formularzu n8n i Data Tables, masz już tabelę products. Jeśli nie, utwórz ją teraz z kolumnami productName i price i dodaj kilka rekordów testowych, np.:
| productName | price |
|---|---|
| Widget A | 29.99 |
| Widget B | 49.99 |
| Widget C | 9.99 |
Każdy rekord w Data Tables otrzymuje automatycznie unikalny identyfikator id. To właśnie po tym polu będziemy filtrować.
Skonfiguruj węzeł Webhook (GET)
Na canvasie dodaj nowy węzeł Webhook. W ustawieniach zmień HTTP Method na GET i nadaj czytelną ścieżkę, np. get-product.


Po zapisaniu n8n wygeneruje dwa adresy URL: testowy (Test URL) i produkcyjny (Production URL). Podczas budowania korzystaj z testowego. Adres będzie wyglądał mniej więcej tak: https://[twoja-instancja]/webhook-test/get-pracownik.
Podłącz węzeł Data Tables Get rows
Po węźle Webhook dodaj węzeł Data Tables. Wybierz operację Get rows i wskaż swoją tabelę. W sekcji filtrów ustaw kolumnę id, warunek equals i pozostaw pole Value puste na razie – wrócimy do niego w następnym kroku.
Dynamiczny filtr przez drag & drop
Prawdziwa moc tego endpointu tkwi w dynamicznym filtrowaniu. Gdybyś wpisał w polu Value na stałe wartość “Bart”, system zawsze szukałby tylko Barta – niezależnie od tego, co ktoś wysle w parametrze URL. Żeby system reagował na to, co ktos wpisze w adresie URL, musisz powiazac pole Value z parametrem z webhooka.
Najprostszy sposób: uruchom węzeł Webhook kliknięciem “Test step” (wyślij testowe zapytanie GET z Postmana lub przegladarki z parametrem ?id=1). N8n pokaże dane wejściowe w panelu Output. Nastepnie przeciagnij pole id z Output webhooka bezposrednio do pola Value w filtrze Data Tables.


N8n automatycznie zamieni to na wyrazenie JavaScript: {{ $json.query.id }}. To jest kluczowy moment – od tej chwili system nie szuka juz statycznej wartosci, tylko tej, ktora przyjdzie w parametrze URL przy kazdym zapytaniu.


Problem typów: ID z URL zawsze przychodzi jako tekst
Po wdrożeniu dynamicznego filtra możesz natknąć sie na subtelny problem. Parametr ?id=1 z URL trafia do webhooka jako tekst (string) "1", nie jako liczba. Jeśli kolumna id w Data Tables przechowuje wartości liczbowe, filtr equals może nie zwrócić wyniku, bo silnik porównuje tekst "1" z liczbą 1 i nie widzi dopasowania.
Rozwiązanie to jedno wyrażenie JavaScript w polu Value zamiast zwykłego {{ $json.query.id }}:
{{ parseInt($json.query.id) }}
parseInt() konwertuje tekst "1" na liczbę 1 przed przekazaniem do filtra. Od tej chwili porównanie działa poprawnie niezależnie od tego, czy ktoś wyśle ?id=1 czy ?id=42.
Dodatkowe zabezpieczenie: jeśli ktoś wyśle ?id=abc (tekst zamiast liczby), parseInt("abc") zwróci NaN. Data Tables nie znajdzie pasującego rekordu i zwróci pustą tablicę [] zamiast błędu – bezpieczne zachowanie.
To prosty, ale konkretny przykład jak JavaScript rozszerza możliwości węzłów n8n tam, gdzie samo drag & drop nie wystarcza.
Testowanie gotowego endpointu w Postmanie
Kiedy workflow jest gotowy, przetestuj go w Postmanie. Jeśli dopiero poznajesz to narzędzie, zajrzyj do artykułu o testowaniu API w Postmanie – tam wyjaśniam podstawy.


W Postmanie: ustaw metodę GET, wklej testowy URL z n8n (Test URL z ustawień węzła Webhook), w zakładce Params dodaj klucz id z wartością 1 i kliknij Send.
Jeśli wszystko jest poprawnie skonfigurowane, w odpowiedzi zobaczysz JSON z rekordem pasującym do parametru: {"id": 1, "productName": "Widget A", "price": 29.99}.


Sprawdź też przypadek brzegowy: wyślij zapytanie z ID, którego nie ma w tabeli (?id=999). Data Tables zwróci pustą tablicę [] – co jest poprawnym zachowaniem. Warto to uwzględnic, jeśli budujesz coś więcej niż prototyp.
Ostatni krok: przełącz workflow z trybu testowego na produkcyjny. W ustawieniach workflow zmień stan na Active. Od tej chwili Twój endpoint odpowiada pod produkcyjnym URL i reaguje na realne zapytania.
Kurs n8n 2.0 · Kodożercy
Automatyzacja to dziś jedna z najbardziej poszukiwanych umiejętności
Firmy szukają ludzi, którzy łączą procesy z narzędziami AI. Kurs n8n 2.0 na Kodożercach da Ci praktyczne umiejętności – od webhooków po agenty AI – które możesz pokazać już jutro.
Zobacz program kursu →

FAQ – Najczęstsze pytania o webhook GET i Data Tables w n8n
Jaka jest różnica między webhook GET a POST w n8n?
Webhook GET przekazuje parametry w adresie URL (Query Params), np. ?name=Bart. Jest używany do odczytu danych i jest widoczny w pasku przeglądarki. Webhook POST przesyła dane w ciele zapytania (Body), co nadaje sie do zapisywania danych i operacji, które zmieniają stan systemu. Artykuł o webhookach w n8n omawia obie metody szczegółowo.
Czy mogę filtrować po kilku kolumnach jednocześnie w Data Tables Get rows?
Tak. W sekcji filtrów węzła Data Tables możesz dodac wiele warunków i połączyc je operatorem AND (wszystkie warunki muszą być spełnione) lub OR (wystarczy jeden). Na przykład filtr id equals 1 AND productName equals "Widget A" zwróci tylko rekord spełniający oba kryteria.
Co sie stanie jeśli zapytanie GET nie znajdzie pasującego rekordu?
Data Tables Get rows zwróci pustą tablicę []. Workflow wykona sie bez błędu – po prostu dane wyjściowe będą puste. Jeśli chcesz obsłużyc ten przypadek inaczej (np. zwrócic komunikat “not found”), dodaj węzeł If/Else sprawdzający czy tablica wynikowa ma elementy.
Jak zabezpieczyc webhook GET przed nieautoryzowanym dostępem?
N8n pozwala dodac do webhooka nagłówek autoryzacyjny (Header Auth) lub token w parametrze URL. W ustawieniach węzła Webhook znajdziesz sekcję Authentication, gdzie możesz wybrać metodę. To minimum bezpieczeństwa dla endpointów, które mają działać w produkcji.
Czy ten sam webhook może obsłużyc wiele różnych parametrów filtrowania?
Tak, ale wtedy logika staje sie bardziej złożona. Możesz użyc węzła If/Else lub Switch, by w zależności od tego, który parametr przyszedł w URL, wykonać inne zapytanie do Data Tables. Alternatywnie: przekazuj wszystkie parametry i buduj filtr dynamicznie z JavaScript w węźle Code.
Podsumowanie
Endpoint GET w n8n to kombinacja trzech elementów: Webhook (GET) jako punkt wejścia, Data Tables Get rows jako baza danych, dynamiczne wyrażenie JavaScript jako filtr. Kluczowy krok to drag & drop – przeciagnięcie parametru id z Output webhooka do pola Value w filtrze, co zamienia statyczny warunek w żywe, reagujące na zapytania wyrażenie. Problem typów (URL zawsze zwraca string) rozwiązujesz jednym parseInt(), a cały endpoint testujesz w Postmanie zanim przełączysz go na produkcję. To ten sam mechanizm, który w wiekszych projektach jest bazą dla automatyzacji odczytujących dane z systemu przez API. Kolejnym krokiem logicznym jest zapis danych przez webhook POST, który opisuję w następnym artykule klastra. Jeśli chcesz zobaczyc pelny obraz automatyzacji w n8n, przejdz do automatyzacja n8n – kompletny przewodnik.



