Tester REST API
Wysyłaj żądania GET, POST, PUT, DELETE do API bezpośrednio w przeglądarce. Dodawaj nagłówki, body JSON, autoryzację Bearer. Podgląd odpowiedzi. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Status HTTP
—
Czas odpowiedzi
pełny czas żądania wykonywanego z serwera narzędzia, łącznie z przekierowaniami
Rozmiar odpowiedzi
liczba bajtów pobranej treści (limit 2 MB)
Finalny URL
adres po przekierowaniach; przy zmianie hosta tester zdejmuje nagłówki Authorization i Cookie
Żądanie
GET https://jsonplaceholder.typicode.com/todos/1
Odpowiedź
Status: 200
Czas: 44 ms
Rozmiar: 83 B
Nagłówki:
date: Tue, 20 Oct 2026 16:34:41 GMT
content-type: application/json; charset=utf-8
access-control-allow-credentials: true
cache-control: max-age=43200
etag: W/"53-hfEnumeNh6YirfjyjaujcOPPT+s"
expires: -1
pragma: no-cache
vary: Origin, Accept-Encoding
x-content-type-options: nosniff
x-powered-by: Express
x-ratelimit-limit: 3600000
x-ratelimit-remaining: 3599999
x-ratelimit-reset: 1790812826
age: 3
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=h50MK4upzy0%2FGdqMgRI2wiOqraqFx2MR2123m%2F1CycHn6VM75hPu7yHr%2B%2B3UDo8yXzo5c7ryLMmd25KH0axk%2ByWRBiOZSDRI9jitQasdU3NP3Ft68VcAh5%2B6aXUWw%2FzHaNz27yB%2BXZK5C%2F4OVrhN"}]}
cf-cache-status: HIT
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
content-encoding: br
server: cloudflare
cf-ray: a4d96e6fabb2db07-FRA
alt-svc: h3=":443"; ma=86400
Treść:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
| Metoda | Do czego służy | Wysyła body? | Podgląd na żywo |
|---|---|---|---|
| GET | Odczyt zasobu | Nie | Tak — podgląd na żywo przy wpisywaniu |
| HEAD | Jak GET, ale bez treści odpowiedzi (same nagłówki) | Nie | Tak |
| OPTIONS | Odpytanie o dozwolone metody i politykę CORS | Nie | Tak |
| POST | Utworzenie zasobu / wykonanie akcji | Tak | Nie — tylko przycisk „Przetwórz” |
| PUT | Zastąpienie zasobu w całości | Tak | Nie — tylko przycisk „Przetwórz” |
| PATCH | Częściowa aktualizacja zasobu | Tak | Nie — tylko przycisk „Przetwórz” |
| DELETE | Usunięcie zasobu | Nie | Nie — tylko przycisk „Przetwórz” |
Autoryzację wysyłasz w nagłówkach — pole „Headers” przyjmuje JSON (np. {"Authorization": "Bearer …", "X-API-Key": "…"}) albo wiersze w formacie „Nazwa: wartość”.
| Klasa | Znaczenie | Typowe kody |
|---|---|---|
| 1xx | Informacyjne | Żądanie przyjęte do obróbki (np. 101 Switching Protocols) |
| 2xx | Sukces | 200 OK, 201 Created, 204 No Content |
| 3xx | Przekierowania | 301 Moved Permanently, 302 Found, 304 Not Modified — tester podąża za nimi, gdy włączysz „Follow redirects” (limit 5, przy zmianie hosta zdejmuje Authorization i Cookie) |
| 4xx | Błąd klienta | 400 Bad Request, 401 Unauthorized (brak lub złe poświadczenia), 403 Forbidden (brak uprawnień), 404 Not Found, 429 Too Many Requests (limit zapytań) |
| 5xx | Błąd serwera | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable |
Warto wiedzieć — REST a bezpieczeństwo
CORS: tester nie symuluje przeglądarki
Polityka same-origin i preflight OPTIONS to mechanizm przeglądarki. Tester odpytuje z serwera, więc pokaże nagłówki Access-Control-Allow-* w odpowiedzi, ale nie odtworzy zachowania przeglądarki. Jeśli w konsoli przeglądarki widzisz błąd CORS, a tester zwraca 200 — problem leży w nagłówkach CORS serwera, nie w samym API.
Klucze API: nagłówki, nie URL
Tokeny i klucze wysyłaj w nagłówkach (Authorization: Bearer …, X-API-Key: …), nigdy w query stringu — adresy lądują w logach serwerów i historii przeglądarki. Do testów używaj kluczy z środowiska testowego i ograniczonych uprawnień; produkcyjnych sekretów nie wklejaj do narzędzi publicznych, a po wycieku rotuj je natychmiast.
SSRF: adresy wewnętrzne są blokowane
Tester blokuje adresy sieci wewnętrznej (localhost, 127.0.0.1, 10.x, 192.168.x, 169.254.x) i niestandardowe porty. To ochrona przed Server-Side Request Forgery — atakiem, w którym publiczne narzędzie robiące żądania „na żądanie użytkownika” wykorzystuje się do skanowania własnej infrastruktury. Błąd 422 przy takim adresie to celowa blokada, nie usterka.
Weryfikacja SSL: wyłączaj tylko na chwilę
Opcja „Verify ssl” pomaga zdiagnozować środowiska z certyfikatem samopodpisanym (np. staging), ale połączenie bez weryfikacji może być przechwycone i zmodyfikowane. W kodzie produkcyjnym nigdy nie wyłączaj weryfikacji TLS. Tester dodatkowo ogranicza odpowiedź do 2 MB i 5 przekierowań, a żądanie przypina do zweryfikowanego adresu IP.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćTester REST API – testuj endpointy HTTP w przeglądarce
REST API tester pozwala wysłać żądania HTTP (GET, POST, PUT, PATCH, DELETE) do dowolnego endpointu i zobaczyć odpowiedź: status code, nagłówki, body JSON/XML. Alternatywa dla Postmana i curl – bez instalacji, bezpośrednio w przeglądarce.
Metody HTTP i ich zastosowania
GET: pobierz dane (bez side effects). POST: utwórz nowy zasób lub wyślij dane. PUT: zastąp cały zasób. PATCH: częściowa aktualizacja. DELETE: usuń zasób. HEAD: tylko nagłówki (bez body). OPTIONS: sprawdź obsługiwane metody (CORS preflight). CONNECT/TRACE: rzadko używane w REST. Idempotentność: GET, PUT, DELETE = ten sam wynik wielokrotnie.
Nagłówki HTTP w API
Content-Type: application/json (body jest JSON). Accept: application/json (oczekuję JSON). Authorization: Bearer TOKEN (JWT/OAuth). X-API-Key: klucz API. X-Request-ID: UUID żądania do tracingu. Cache-Control: no-cache. User-Agent: identyfikacja klienta. CORS headers: Access-Control-Allow-Origin (serwer → klient).
Kody odpowiedzi HTTP
2xx sukces: 200 OK, 201 Created, 204 No Content. 3xx przekierowania: 301 Moved Permanently, 302 Found, 304 Not Modified. 4xx błędy klienta: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 422 Unprocessable Entity, 429 Too Many Requests. 5xx błędy serwera: 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable.
REST API vs GraphQL vs gRPC
REST: proste, oparte na zasobach i HTTP. Niezależny od języka. GraphQL: jeden endpoint, klient określa kształt odpowiedzi. Elastyczny, dobre dla złożonych UI. gRPC: Protocol Buffers, szybki, binarny, idealny dla microservices. WebSocket: dwukierunkowy, real-time. Większość publicznych API: REST. Wewnętrzne mikrousługi: gRPC.
Jak działa tester REST API w przeglądarce
Tester REST API nie jest osobnym serwerem pośredniczącym – to interfejs, który składa żądanie HTTP i wysyła je bezpośrednio z Twojej przeglądarki do wskazanego endpointu. W tle działa mechanizm fetch (lub XMLHttpRequest), który przyjmuje cztery elementy wejściowe: metodę, pełny adres URL, zestaw nagłówków oraz opcjonalne body. Serwer widzi więc połączenie z Twojego adresu IP, a nie z serwera webp.pl, i odpowiada dokładnie tak samo, jak odpowiedziałby aplikacji frontendowej.
Zasada jest prosta i dwustronna. Żądanie = metoda + URL + nagłówki + body. Odpowiedź = status code + nagłówki + body. Narzędzie pokazuje surowy wynik: kod odpowiedzi, wszystkie nagłówki zwrócone przez serwer oraz treść w formacie JSON, XML albo czystym tekście. Nie interpretuje danych biznesowych ani nie waliduje ich względem schematu – wyświetla to, co faktycznie przyszło z sieci.
Kluczowy jest podział żądań na proste i nieproste. Gdy używasz metody innej niż GET, HEAD lub POST albo dodajesz własny nagłówek (Authorization, X-API-Key, Content-Type: application/json), przeglądarka najpierw wysyła zapytanie preflight OPTIONS i czeka, aż serwer potwierdzi nagłówkami Access-Control-Allow-Origin, Access-Control-Allow-Methods i Access-Control-Allow-Headers, że taki ruch akceptuje. Dopiero wtedy leci właściwe żądanie. Jeśli serwer nie odpowie na OPTIONS, w testerze zobaczysz błąd sieci lub CORS, a nie kod z API – mimo że endpoint działa poprawnie.
Przykład krok po kroku: dodanie zasobu przez POST
- Ustaw metodę na POST i wpisz adres endpointu, np. https://api.twojadomena.pl/v1/users.
- Dodaj nagłówki: Content-Type: application/json, Accept: application/json oraz Authorization: Bearer TOKEN z ważnym tokenem.
- W polu body wklej JSON z danymi nowego zasobu, np. {"email":"[email protected]","role":"user"}, i upewnij się, że tryb body jest ustawiony na JSON, a nie na formularz.
- Wyślij żądanie i sprawdź sam status: 201 Created oznacza, że zasób powstał. W nagłówkach odpowiedzi poszukaj Location – zwykle zawiera URL nowo utworzonego zasobu.
- Przejrzyj body odpowiedzi: czy zawiera nadane id oraz pola, których nie wysyłałeś, np. znacznik czasu utworzenia. To pokazuje, co dopisuje serwer.
- Powtórz to samo żądanie z błędnym lub zdublowanym e-mailem, aby zobaczyć zachowanie walidacji – typowo 422 Unprocessable Entity albo 400 Bad Request. Na koniec wyślij DELETE na adres zasobu i potwierdź odpowiedź 204 No Content z pustym body.
Tabela referencyjna: co widzisz i co to znaczy
| Objaw w testerze | Prawdopodobna przyczyna | Co zrobić |
|---|---|---|
| Brak odpowiedzi, błąd sieci lub CORS | Serwer nie zwraca nagłówków CORS dla Twojego origin albo nie obsługuje OPTIONS | Sprawdź preflight i nagłówki Access-Control-Allow-*; przetestuj z klienta natywnego |
| 401 Unauthorized | Brak tokenu, wygasły JWT lub zły schemat nagłówka | Popraw Authorization: Bearer TOKEN i sprawdź ważność tokenu |
| 403 Forbidden | Token poprawny, ale brak uprawnień do zasobu | Zweryfikuj rolę lub zakres uprawnień, nie tylko samo uwierzytelnienie |
| 404 Not Found | Literówka w ścieżce, zmieniony prefiks wersji API | Porównaj URL z dokumentacją, sprawdź /v1, /v2 i końcowe ukośniki |
| 422 Unprocessable Entity | JSON poprawny składniowo, ale dane nie przechodzą walidacji | Zestaw body z wymaganym schematem: typy, pola wymagane, formaty |
| 429 Too Many Requests | Przekroczony limit zapytań | Odczytaj nagłówek Retry-After i zwolnij tempo testów |
| 502 Bad Gateway lub 503 Service Unavailable | Problem infrastruktury po stronie API, nie samego żądania | Powtórz po chwili i sprawdź status usługi u dostawcy |
| 204 No Content z pustym body | Prawidłowa odpowiedź na DELETE lub PUT | Nie parsuj JSON – wystarczy sam status i nagłówki |
Praktyczne wskazówki
- Nie używaj produkcyjnych kluczy API – żądanie wychodzi z Twojej przeglądarki i możesz nieświadomie wykonać realną zmianę danych metodą POST, PUT, PATCH lub DELETE. Testuj na środowisku staging.
- Rozdzielaj preflight od żądania właściwego – jeśli coś nie działa, najpierw sprawdź, czy serwer odpowiada na OPTIONS i jakie nagłówki zwraca. Dopiero potem diagnozuj body i autoryzację.
- Czytaj nagłówki odpowiedzi, nie tylko status – Content-Type zdradza format body, X-Request-ID pozwala znaleźć żądanie w logach, a nagłówki limitów mówią, ile zapytań jeszcze zostało.
- Przenoś udany test do curl – gotowe polecenie łatwo wkleić do skryptu, dokumentacji zespołu albo potoku CI, gdzie tester przeglądarkowy nie ma zastosowania.
- Trzymaj jeden przypadek na jedno żądanie – osobno testuj sukces, osobno walidację i osobno brak autoryzacji. Łatwiej wtedy ustalić, która zmiana zepsuła wynik.
Czego narzędzie nie zrobi
- Nie obejdzie CORS – narzędzie działa w Twojej przeglądarce, więc podlega polityce same-origin. Jeśli API nie wysyła nagłówków CORS, żądanie nie dojdzie niezależnie od poprawności danych.
- Nie ustawi nagłówków zakazanych – przeglądarka blokuje ręczne nadpisywanie m.in. User-Agent, Origin i Host, a Content-Length wylicza sama. Wynik testu nie odzwierciedli tego, co wysłałby klient natywny.
- Nie obsłuży mTLS i innych protokołów – brak obsługi certyfikatów klienta oraz protokołów takich jak WebSocket czy gRPC. Zakres ogranicza się do klasycznego HTTP i HTTPS.
- Ma granice rozmiaru i formatu body – bardzo duże payloady oraz wysyłka plików przez multipart/form-data mogą być utrudnione lub niemożliwe, podobnie jak żądania wymagające ciasteczka sesyjnego z innej domeny.
Najczęstsze pytania
Jak testować API z autoryzacją Bearer?
Dodaj nagłówek: Authorization: Bearer eyJhbGciOiJIUzI1NiJ9... Pobranie tokenu: POST /auth/login z {username, password} → response.token. Refresh: POST /auth/refresh z refresh_token. Expiry: sprawdź exp claim w JWT (narzędzie JWT decoder na tej stronie). Basic Auth: Authorization: Basic base64(user:pass).
Jak debugować CORS błędy w API?
Błąd: "Access to fetch at X from origin Y has been blocked by CORS policy". Sprawdź: czy serwer zwraca Access-Control-Allow-Origin: * lub Access-Control-Allow-Origin: twoja-domena. Preflight (OPTIONS): Content-Type: application/json wymaga preflight. Rozwiązanie serwer: dodaj CORS headers. Tymczasowo: CORS proxy lub localhost proxy (Vite, CRA mają proxy config).
Jak wysłać JSON w POST request?
Content-Type: application/json (OBOWIĄZKOWO). Body: {"key": "value", "number": 42}. Curl: curl -X POST URL -H "Content-Type: application/json" -d '{"key":"val"}'. Fetch JS: fetch(URL, {method:"POST", headers:{"Content-Type":"application/json"}, body: JSON.stringify(data)}). Axios: axios.post(URL, data) – automatycznie dodaje Content-Type.
Jak testować API lokalnie?
localhost vs 127.0.0.1: te same (aliasy). HTTPS lokalnie: mkcert (lokalne CA), Vite --https, ngrok (tunel publiczny). Mock API: json-server (npm), WireMock, msw (Mock Service Worker). Postman: kolekcje, środowiska, automated tests. Insomnia: open-source alternative. Bruno: offline-first, pliki kolekcji w git.
Jak rate limiting wpływa na testy API?
429 Too Many Requests: przekroczyłeś limit. Nagłówki: X-RateLimit-Limit (max), X-RateLimit-Remaining (zostało), X-RateLimit-Reset (kiedy reset, Unix timestamp). Retry-After: ile sekund czekać. Exponential backoff: 1s, 2s, 4s, 8s... Testowanie rate limit: sprawdź dokumentację API przed masowymi requestami.
Dlaczego tester REST API pokazuje błąd CORS, choć endpoint działa w Postmanie?
Postman nie stosuje polityki same-origin, a przeglądarka tak. Jeśli API nie zwraca nagłówka Access-Control-Allow-Origin lub nie odpowiada na zapytanie OPTIONS, żądanie z przeglądarki zostanie zablokowane, mimo że sam endpoint działa poprawnie.
Jak wysłać token Bearer w testerze?
Dodaj nagłówek Authorization o wartości Bearer TOKEN, gdzie TOKEN to Twój JWT lub token OAuth. Ponieważ jest to nagłówek niestandardowy, przeglądarka wykona najpierw preflight OPTIONS, więc serwer musi go akceptować.
Czy mogę przetestować endpoint wymagający zalogowania przez ciasteczko sesyjne?
Tylko częściowo. Ciasteczka z innej domeny są dziś blokowane przez przeglądarki, więc najpewniejszym rozwiązaniem jest uwierzytelnianie tokenem w nagłówku Authorization albo praca na endpointach tej samej domeny w kontekście trwającej sesji.
Czy wysyłanie żądań w testerze online jest bezpieczne?
Żądanie wychodzi z Twojej przeglądarki i serwer widzi Twoje IP, więc nie wklejaj kluczy produkcyjnych ani danych osobowych. Pamiętaj też, że POST, PUT, PATCH i DELETE mogą realnie zmienić stan danych na serwerze.
Czy tester obsługuje WebSocket, gRPC albo Server-Sent Events?
Nie. Obsługuje klasyczne żądania HTTP i HTTPS z metodami GET, POST, PUT, PATCH, DELETE, HEAD i OPTIONS. Do protokołów dwukierunkowych i binarnych potrzebny jest osobny klient.
Powiązane narzedzia: analizator JWT, formatowanie JSON i generator naglowkow HTTP.