Apinizer Example Services

REST, SOAP, WebSocket, gRPC ve SSL/TLS endpoint'leri saglayan API Gateway test servisi.

Base URL:
Ports: 10090 (REST/SOAP/WS), 10091 (WS dedicated), 50052 (gRPC), 10001-10040 (BadSSL HTTPS)
Swagger UI: /swagger-ui.html | OpenAPI: /v3/api-docs | WADL: /v2/application.wadl | SOAP WSDL: /service/student.wsdl
Icerik:
1. HTTP Methods 2. Request Inspection 3. Authentication 4. Response Formats 5. Status & Redirect 6. Cookies 7. Dynamic Data 8. Images 9. Compression 10. Encoding Test 11. Echo 12. SSE 13. File Upload/Download 14. User CRUD 15. Contact (OpenAPI) 16. Enc/Dec 17. Test Utils 18. Client Test 19. SOAP 20. WebSocket 21. gRPC 22. BadSSL 23. Certs/Keystore 24. Proxy Body Integrity 25. Proxy Header Passthrough 26. Proxy Timeout/Slow 27. Proxy URL Handling 28. Proxy Connection/Redirect 29. Proxy CORS 30. Proxy Cookie Handling 31. Proxy Content-Type/Charset 32. Proxy HTTP Methods 33. Proxy Security Test

1. REST - HTTP Method Endpoints (httpbin compatible)

Gelen istegi echo eder. Headers, args, body, origin IP doner.

GET /get
Istek bilgilerini JSON olarak doner.
curl http:///get
Response: {"args":{},"headers":{"Host":"..."},"origin":"...","url":"..."}
POST /post
POST body'sini echo eder.
curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' http:///post
PUT /put
curl -X PUT -H "Content-Type: application/json" -d '{"id":1}' http:///put
PATCH /patch
curl -X PATCH -H "Content-Type: application/json" -d '{"field":"val"}' http:///patch
DELETE /delete
curl -X DELETE http:///delete
ANY /anything/{path}
Herhangi bir HTTP method ve path kabul eder, echo eder.
curl http:///anything/my/custom/path
curl -X POST -d '{"x":1}' http:///anything

2. REST - Request Inspection

GET /headers
Tum istek header'larini doner.
curl http:///headers
GET /ip
Client IP adresini doner.
curl http:///ip
GET /user-agent
User-Agent header'ini doner.
curl http:///user-agent

3. REST - Authentication

httpbin Authentication
GET /basic-auth/{user}/{passwd}
HTTP Basic Auth. Basarili: 200, basarisiz: 401.
curl -u testuser:testpass http:///basic-auth/testuser/testpass
Response: {"authenticated":true,"user":"testuser"}
GET /hidden-basic-auth/{user}/{passwd}
Hidden Basic Auth. Basarisizda 404 doner (401 degil).
curl -u testuser:testpass http:///hidden-basic-auth/testuser/testpass
GET /bearer
Bearer token dogrulama.
curl -H "Authorization: Bearer my-token-123" http:///bearer
GET /digest-auth/{qop}/{user}/{passwd}
HTTP Digest Auth (MD5). QOP: auth veya auth-int.
curl --digest -u testuser:testpass http:///digest-auth/auth/testuser/testpass
GET /digest-auth/{qop}/{user}/{passwd}/{algorithm}
Digest Auth - belirli algoritma secimi (MD5, SHA-256, SHA-512).
curl --digest -u testuser:testpass http:///digest-auth/auth/testuser/testpass/SHA-256
GET /digest-auth/{qop}/{user}/{passwd}/{algorithm}/{stale_after}
Digest Auth - stale nonce destegi.
curl --digest -u testuser:testpass http:///digest-auth/auth/testuser/testpass/MD5/3
Apinizer Custom Authentication
Varsayilan kullanici: user1 / P@ssW@rd!
GET /auth/authenticateWithHeader
Header-based auth. Headers: username, password
curl -H "username: user1" -H "password: P@ssW@rd!" http:///auth/authenticateWithHeader
GET /auth/authenticateWithBase64
Base64 token auth. Header: Token: Basic base64(user:pass)
curl -H "Token: Basic dXNlcjE6UEBzc1dAcmQh" http:///auth/authenticateWithBase64
GET /auth/authenticateWithQueryParam
Query parameter auth. Params: username, password
curl "http:///auth/authenticateWithQueryParam?username=user1&password=P@ssW@rd!"
GET /auth/authenticateWithPathParam/{username}/{password}
Path parameter auth.
curl http:///auth/authenticateWithPathParam/user1/P@ssW@rd!
POST /auth/authenticateWithBody
JSON body auth.
curl -X POST -H "Content-Type: application/json" -d '{"username":"user1","password":"P@ssW@rd!"}' http:///auth/authenticateWithBody
POST /auth/authenticateWithForm
Multipart form auth.
curl -X POST -F "username=user1" -F "password=P@ssW@rd!" http:///auth/authenticateWithForm
POST /auth/authenticateWithXWwwForm
x-www-form-urlencoded auth.
curl -X POST -d "username=user1&password=P@ssW@rd!" http:///auth/authenticateWithXWwwForm
GET /apinizer/convertBase64
JWT token body'sini decode eder. Query param: token
curl "http:///apinizer/convertBase64?token=eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYWRtaW4ifQ.xxx"
Client Certificate Info
GET /cert-info
Client sertifika bilgilerini doner. Headers: X-Client-Cert, X-Client-Verify, X-Client-Subject-DN, X-Client-Issuer-DN
curl -H "X-Client-Verify: SUCCESS" -H "X-Client-Subject-DN: CN=test" http:///cert-info
GET /cert-info/hello
Client cert info hello endpoint.

4. REST - Response Formats

GET /html
HTML response doner.
curl http:///html
GET /json
JSON response doner.
curl http:///json
GET /xml
XML response doner.
curl http:///xml
GET /robots.txt
curl http:///robots.txt
GET /deny
Deny mesaji doner (robots.txt test).
GET /encoding/utf8
UTF-8 karakter ornekleri (unicode, emoji, CJK, Arapca).
curl http:///encoding/utf8

5. REST - Status Codes & Redirects

ANY /status/{codes}
Belirtilen HTTP status code'u doner. GET/POST/PUT/PATCH/DELETE destekler.
curl -o /dev/null -w "%{http_code}" http:///status/418
curl -X POST http:///status/201
GET /cache
Cache/ETag testi. If-Modified-Since veya If-None-Match varsa 304, yoksa 200 + ETag.
curl -v http:///cache
GET /cache/{value}
Cache-Control: max-age={value} ile cache response.
curl -v http:///cache/3600
GET /etag/{etag}
ETag validation. If-None-Match/If-Match header test.
curl -H "If-None-Match: my-etag" http:///etag/my-etag
GET/POST /response-headers?key=value
Query param'lari response header olarak ekler.
curl -v "http:///response-headers?X-Custom=test&Server=mock"
GET /redirect/{n}
n kere redirect zinciri.
curl -L http:///redirect/3
GET /relative-redirect/{n}
Relative URL ile redirect zinciri.
curl -L http:///relative-redirect/3
GET /absolute-redirect/{n}
Absolute URL ile redirect zinciri.
curl -L http:///absolute-redirect/3
ANY /redirect-to?url={url}&status_code={code}
Belirtilen URL'ye redirect. GET/POST/PUT/PATCH/DELETE.
curl -L "http:///redirect-to?url=http://example.com&status_code=302"

6. REST - Cookies

GET /cookies
Gonderilen tum cookie'leri doner.
curl -b "name=value" http:///cookies
GET /cookies/set?name=value
Query param'lari cookie olarak set eder.
curl -c - "http:///cookies/set?session=abc123&lang=en"
GET /cookies/set/{name}/{value}
Tek cookie set eder.
curl -c - http:///cookies/set/token/xyz
GET /cookies/delete?name
Belirtilen cookie'leri siler (expires=past).
curl -c - "http:///cookies/delete?session&lang"

7. REST - Dynamic Data

GET /bytes/{n}
n byte rastgele data doner (max 100KB). Encoding: /bytes/{n}/{encoding}
curl http:///bytes/1024 --output -
curl http:///bytes/1024/gzip --output - | gunzip
Desteklenen encoding'ler: /gzip, /deflate, /br, /zstd
GET /stream-bytes/{n}
n byte rastgele data stream eder. Encoding: /stream-bytes/{n}/{encoding}
curl http:///stream-bytes/2048
Desteklenen encoding'ler: /gzip, /deflate, /br, /zstd
ANY /delay/{delay}
Belirtilen saniye kadar bekler, sonra echo response doner (max 10s). GET/POST/PUT/PATCH/DELETE.
curl http:///delay/3
GET /drip?duration={s}&numbytes={n}&code={c}&delay={d}
Belirtilen sure boyunca veriyi damla damla gonderir.
curl "http:///drip?duration=3&numbytes=10&code=200&delay=1"
GET /range/{numbytes}
Range request destekli response. Accept-Ranges + Content-Range header.
curl -H "Range: bytes=0-99" http:///range/1024
GET /stream/{n}
n satir JSON stream (NDJSON). Her satir ayri JSON objesi.
curl http:///stream/5
GET /base64/{value}
Base64 decode eder.
curl http:///base64/SGVsbG8gV29ybGQ=
Response: Hello World
GET /uuid
Rastgele UUID doner.
curl http:///uuid
Response: {"uuid":"550e8400-..."}
GET /links/{n}/{offset}
n adet HTML link iceren sayfa. Offset opsiyonel.
curl http:///links/10

8. REST - Images

GET /image
Accept header'a gore image doner (png, jpeg, svg, webp).
curl -H "Accept: image/png" http:///image --output img.png
GET /image/png | /image/jpeg | /image/svg | /image/webp
Belirtilen formatta image doner.
curl http:///image/png --output test.png

9. REST - Compression (httpbin compat)

httpbin uyumlu compression endpoint'leri. Donulen JSON body kendisi hakkinda bilgi icerir.

GET /gzip
Gzip ile sikistirilmis JSON response.
curl --compressed http:///gzip
Response: {"gzipped":true,"method":"GET","origin":"..."}
GET /deflate
Deflate ile sikistirilmis JSON response.
curl --compressed http:///deflate
GET /brotli
Brotli ile sikistirilmis JSON response.
curl --compressed http:///brotli
GET /zstd
Zstandard ile sikistirilmis JSON response.
curl -H "Accept-Encoding: zstd" http:///zstd --output - | zstd -d

10. Encoding Test (Advanced Content-Encoding)

Manuel compression. Spring auto-compression kapali. Her endpoint kendi encoding'ini uygular. Gateway content-encoding policyleri test icin tasarlanmistir.

Text Encoding
PathEncodingAciklama
/encoding-test/text/identityidentitySikistirilmamis text
/encoding-test/text/gzipgzipGzip text
/encoding-test/text/deflatedeflateDeflate text
/encoding-test/text/brbrotliBrotli text
/encoding-test/text/zstdzstdZstandard text
curl --compressed http:///encoding-test/text/gzip
Text UTF-8 Encoding
PathEncodingAciklama
/encoding-test/text-utf8/identityidentityUTF-8 text, sikistirilmamis
/encoding-test/text-utf8/gzipgzipUTF-8 text, gzip
/encoding-test/text-utf8/deflatedeflateUTF-8 text, deflate
/encoding-test/text-utf8/brbrotliUTF-8 text, brotli
/encoding-test/text-utf8/zstdzstdUTF-8 text, zstd
curl --compressed http:///encoding-test/text-utf8/gzip
JSON UTF-8 Encoding
GET /encoding-test/json-utf8/{encoding}
JSON UTF-8 response. encoding: gzip, deflate, br, zstd, identity
curl --compressed http:///encoding-test/json-utf8/gzip
Corrupted Encoding (Bozuk/Hatali)

Gateway'in hatali encoding durumlarini nasil handle ettigini test eder.

PathSenaryoAciklama
/encoding-test/corrupted/plain-as-gzipPlain as GzipDuz metin ama Content-Encoding: gzip header'i var
/encoding-test/corrupted/corrupted-gzipCorrupted GzipBozuk gzip data
/encoding-test/corrupted/gzip-as-brGzip as BrotliGzip data ama Content-Encoding: br header'i var
/encoding-test/corrupted/double-singleDouble as SingleCift sikistirilmis ama tek encoding header'i var
/encoding-test/corrupted/empty-ceEmpty CESikistirilmis body ama Content-Encoding header'i bos
/encoding-test/corrupted/empty-bodyEmpty BodyContent-Encoding header var ama body bos
curl -v http:///encoding-test/corrupted/plain-as-gzip
Chained Encoding (Zincirleme Sikistirma)

Birden fazla encoding uygulanmis response. Content-Encoding: enc1, enc2

PathChainAciklama
/encoding-test/chained/gzip-deflategzip, deflateGzip sonra deflate
/encoding-test/chained/gzip-brgzip, brGzip sonra brotli
/encoding-test/chained/gzip-gzipgzip, gzipCift gzip
/encoding-test/chained/br-gzipbr, gzipBrotli sonra gzip
/encoding-test/chained/deflate-gzipdeflate, gzipDeflate sonra gzip
curl -v http:///encoding-test/chained/gzip-deflate
No-Transform (Cache-Control: no-transform)

Proxy/gateway'in content'i degistirmemesi gereken response'lar.

PathEncoding
/encoding-test/no-transform/gzipgzip + no-transform
/encoding-test/no-transform/deflatedeflate + no-transform
/encoding-test/no-transform/brbrotli + no-transform
/encoding-test/no-transform/zstdzstd + no-transform
/encoding-test/no-transform/identityidentity + no-transform
curl -v --compressed http:///encoding-test/no-transform/gzip
Vary Header
PathAciklama
/encoding-test/vary/gzipVary: Accept-Encoding + gzip
/encoding-test/vary/deflateVary + deflate
/encoding-test/vary/brVary + brotli
/encoding-test/vary/zstdVary + zstd
/encoding-test/vary/identityVary + identity
Special HTTP Status + Encoding
PathStatusEncoding
/encoding-test/304/gzip304gzip
/encoding-test/304/deflate304deflate
/encoding-test/304/br304brotli
/encoding-test/304/zstd304zstd
/encoding-test/206/gzip206gzip
/encoding-test/206/deflate206deflate
/encoding-test/206/br206brotli
/encoding-test/206/zstd206zstd
/encoding-test/206/identity206identity
curl -v http:///encoding-test/304/gzip
Chunked Transfer + Encoding
PathEncoding
/encoding-test/chunked/gzipchunked + gzip
/encoding-test/chunked/deflatechunked + deflate
/encoding-test/chunked/brchunked + brotli
/encoding-test/chunked/zstdchunked + zstd
curl -v --compressed http:///encoding-test/chunked/gzip
Large Response + Encoding

Buyuk response boyutu ile encoding testi.

PathBoyutEncoding
/encoding-test/large/1mb/identity1 MBidentity
/encoding-test/large/1mb/gzip1 MBgzip
/encoding-test/large/1mb/deflate1 MBdeflate
/encoding-test/large/1mb/br1 MBbrotli
/encoding-test/large/1mb/zstd1 MBzstd
/encoding-test/large/10mb/identity10 MBidentity
/encoding-test/large/10mb/gzip10 MBgzip
/encoding-test/large/10mb/deflate10 MBdeflate
/encoding-test/large/10mb/br10 MBbrotli
/encoding-test/large/10mb/zstd10 MBzstd
/encoding-test/large/100mb/identity100 MBidentity
/encoding-test/large/100mb/gzip100 MBgzip
/encoding-test/large/100mb/deflate100 MBdeflate
/encoding-test/large/100mb/br100 MBbrotli
/encoding-test/large/100mb/zstd100 MBzstd
curl --compressed http:///encoding-test/large/1mb/gzip --output /dev/null -w "Size: %{size_download}, Time: %{time_total}s"
Content-Length Correct/Wrong
PathAciklama
/encoding-test/content-length/gzip/correctDogru Content-Length + gzip
/encoding-test/content-length/gzip/wrongYanlis Content-Length + gzip
/encoding-test/content-length/br/correctDogru Content-Length + brotli
/encoding-test/content-length/br/wrongYanlis Content-Length + brotli
/encoding-test/content-length/deflate/correctDogru Content-Length + deflate
/encoding-test/content-length/deflate/wrongYanlis Content-Length + deflate
Transfer-Encoding
PathAciklama
/encoding-test/transfer-encoding/gzipTransfer-Encoding: gzip
/encoding-test/transfer-encoding/deflateTransfer-Encoding: deflate
Q-Value & Download
GET /encoding-test/qvalue
Accept-Encoding quality value testi. En yuksek q-value encoding'i secilir.
curl -H "Accept-Encoding: gzip;q=0.5, br;q=1.0, deflate;q=0.1" http:///encoding-test/qvalue
GET /encoding-test/download/{fileType}/{encoding}
Dosya indirme + encoding. fileType: txt, json, xml, bin. encoding: gzip, deflate, br, zstd, identity
curl http:///encoding-test/download/json/gzip --output test.json.gz
Request Encoding Echo
POST /encoding-test/request/echo
Request body'sini decompress edip echo eder. Content-Encoding header'ina gore otomatik decompression yapar.
echo "hello" | gzip | curl -X POST -H "Content-Encoding: gzip" -H "Content-Type: text/plain" --data-binary @- http:///encoding-test/request/echo

11. REST - Echo Endpoints

POST /echo/request
Request body'sini decompress edip JSON meta bilgisiyle echo eder.
curl -X POST -H "Content-Type: application/json" -d '{"test":true}' http:///echo/request
POST /echo/request/raw
Request body'sini ham byte olarak echo eder.
curl -X POST -d 'raw data here' http:///echo/request/raw
POST /echo/headers
Request header'larini echo eder.
curl -X POST -H "X-Custom: test" http:///echo/headers
POST /echo/multipart
Multipart form data'yi echo eder.
curl -X POST -F "name=test" -F "file=@/path/to/file" http:///echo/multipart

12. REST - Server-Sent Events (SSE)

GET /sse
text/event-stream. Periyodik SSE event'ler gonderir.
curl -N http:///sse
Response: data: {"id":1,"message":"SSE event","timestamp":"..."}\n\n
GET /sse/{encoding}
Encoding ile SSE stream: gzip, deflate, br, zstd
curl -N --compressed http:///sse/gzip

13. REST - File Upload & Download

File Upload
POST /test/fileUpload
Tek dosya upload. Form field: file
curl -F "file=@/path/to/file.txt" http:///test/fileUpload
POST /test/multipart
Multipart upload: dosya + metadata. Fields: file, name, description
curl -F "file=@photo.jpg" -F "name=photo" -F "description=test" http:///test/multipart
POST /test/multipartMultiple
Birden fazla dosya upload. Field: files (multiple)
curl -F "files=@file1.txt" -F "files=@file2.txt" http:///test/multipartMultiple
File Download (Uploaded Files)
GET /test/downloadFile/{fileName}
Daha once upload edilen dosyayi indir.
curl http:///test/downloadFile/file.txt --output file.txt
Static File Download (Encoding Variants)

JPG, PDF, TXT, BIN dosyalari farkli encoding'lerle indir. Her dosya tipi icin: identity, gzip, deflate, br, zstd

Base PathDosya TipiEncoding Variants
/download/jpgJPEG image/identity, /gzip, /deflate, /br, /zstd (veya encoding'siz: /download/jpg)
/download/pdfPDF document/identity, /gzip, /deflate, /br, /zstd
/download/txtText file/identity, /gzip, /deflate, /br, /zstd
/download/binBinary file/identity, /gzip, /deflate, /br, /zstd
curl http:///download/jpg --output photo.jpg
curl http:///download/pdf/gzip --output doc.pdf.gz
curl http:///download/txt/br --output text.txt.br

14. REST - User CRUD API

In-memory user store. Sunucu restart'inda sifirlenir.

GET /api/user/
Tum kullanicilari listele.
curl http:///api/user/
GET /api/user/{id}
ID ile kullanici getir (path param).
curl http:///api/user/1
GET /api/user?id={id}
ID ile kullanici getir (query param).
curl "http:///api/user?id=1"
GET /api/getUserByUserInQueryParam?user={json}
JSON user objesi ile arama.
curl "http:///api/getUserByUserInQueryParam?user=%7B%22name%22:%22John%22%7D"
POST /api/user/
Yeni kullanici olustur.
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","surname":"Doe","email":"john@test.com"}' http:///api/user/
PUT /api/user/{id}
Kullaniciyi guncelle.
curl -X PUT -H "Content-Type: application/json" -d '{"name":"Jane","surname":"Doe"}' http:///api/user/1
PATCH /api/user/{id}
Kullaniciyi kismi guncelle.
curl -X PATCH -H "Content-Type: application/json" -d '{"email":"new@test.com"}' http:///api/user/1
DELETE /api/user/{id}
Kullaniciyi sil.
curl -X DELETE http:///api/user/1
DELETE /api/user/
Tum kullanicilari sil.
curl -X DELETE http:///api/user/

15. REST - Contact API (OpenAPI/Swagger)

Swagger UI ile tanimlanan OpenAPI uyumlu CRUD.

GET /openapi/contacts/
Tum contactlari listele. Pagination: ?page=0&size=10
curl http:///openapi/contacts/
GET /openapi/contacts/{contactId}
Contact getir (path param).
curl http:///openapi/contacts/1
POST /openapi/contacts
Yeni contact olustur.
curl -X POST -H "Content-Type: application/json" -d '{"firstName":"Ali","lastName":"Veli","email":"ali@test.com","phone":"+901234567890"}' http:///openapi/contacts
PUT /openapi/contacts/{contactId}
Contact guncelle.
curl -X PUT -H "Content-Type: application/json" -d '{"firstName":"Ali","lastName":"Yilmaz"}' http:///openapi/contacts/1
DELETE /openapi/contacts/{contactId}
Contact sil.
curl -X DELETE http:///openapi/contacts/1

16. REST - Encode/Decode

POST /api/enc/
Body'yi Base64 ile encode eder.
curl -X POST -H "Content-Type: text/plain" -d 'Hello World' http:///api/enc/
POST /api/dec/
Base64 encoded body'yi decode eder.
curl -X POST -H "Content-Type: text/plain" -d 'SGVsbG8gV29ybGQ=' http:///api/dec/

17. REST - Test Utilities

GET /test/test/hello
Basit hello endpoint. Her istekte counter artar.
curl http:///test/test/hello
PATCH /test/test/patch
Basit PATCH test endpoint.
curl -X PATCH http:///test/test/patch
GET /test/test/helloWait?wait={ms}
Belirtilen ms kadar bekler, sonra response doner. Latency testi.
curl "http:///test/test/helloWait?wait=2000"
GET /test/multipleHeaders
Birden fazla header iceren response.
curl -v http:///test/multipleHeaders

18. REST - Client/Edge Case Test

HTTP client ve gateway edge case testleri.

GET /response/plain
Sikistirilmamis plain JSON response.
curl http:///response/plain
GET /response/chunked/stream
Chunked streaming - zamanlama ile parcalar halinde gonderir.
curl -N http:///response/chunked/stream
GET /status/304
304 Not Modified + gzip Content-Encoding header (body yok).
curl -v http:///status/304
GET /status/304-with-body
304 + spec-ihlali body (edge case testi).
curl -v http:///status/304-with-body
GET /status/206
206 Partial Content + gzip.
curl -v http:///status/206
GET /large/gzip-bomb
Gzip bomb - kucuk compressed, 100MB decompressed. Gateway gzip-bomb korumasi testi.
curl --compressed http:///large/gzip-bomb --output /dev/null -w "Size: %{size_download}"
GET /vary/none
Vary header olmadan response.
curl -v http:///vary/none
GET /vary/wildcard
Vary: * (wildcard) ile response.
curl -v http:///vary/wildcard
GET /range/10kb/gzip
Range request + gzip encoding.
curl -H "Range: bytes=0-1023" http:///range/10kb/gzip
GET /stream/plain
Plain byte stream - zamanlama ile parcalar halinde gonderir.
curl -N http:///stream/plain

19. SOAP / WSDL Endpoint

SOAP /service/student-details
SOAP 1.1 StudentDetailsService. MTOM enabled. Namespace: http://www.apinizer.com/xml/school
Request: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.apinizer.com/xml/school"> <soapenv:Header/> <soapenv:Body> <sch:StudentDetailsRequest> <sch:name>John</sch:name> </sch:StudentDetailsRequest> </soapenv:Body> </soapenv:Envelope>
curl -X POST -H "Content-Type: text/xml" -d '@request.xml' http:///service/student-details

20. WebSocket Endpoints

Port 10090 uzerinden erisilebilir. Ayrica port 10091'de bagimsiz WebSocket servisi de calisir (ayni path'ler).
WS ws://{host}:{port}/websocket
Ana WebSocket endpoint. Text mesaj gonder/al. Echo + timestamp doner.
wscat -c ws:///websocket
// JavaScript: const ws = new WebSocket('ws:///websocket'); ws.onmessage = (e) => console.log(e.data); ws.send('Hello!');
WS ws://{host}:{port}/channel-websocket/socket/{channelName}/{tenantId}
Kanal bazli WebSocket. Path parametreleri ile kanal ve tenant belirtilir.
wscat -c ws:///channel-websocket/socket/notifications/tenant1
WS ws://{host}:{port}/ws/socket.io/
Socket.io uyumlu WebSocket endpoint.
wscat -c ws:///ws/socket.io/
Dedicated WebSocket (Port 10091): Ayni endpoint'ler port 10091 uzerinden de erisilebilir:
wscat -c ws://:10091/websocket

21. gRPC Endpoints (Port 50052)

gRPC HelloService - 4 RPC pattern. Port: 50052
Proto: hello.proto indir | Adres: :50052
gRPC hello.HelloService/SayHello
Unary RPC - Tek istek, tek yanit.
grpcurl -plaintext -d '{"name":"World"}' :50052 hello.HelloService/SayHello
Response: {"message":"Hello World"}
gRPC hello.HelloService/SayHelloServerStream
Server Streaming - Tek istek, 5 ardisik yanit.
grpcurl -plaintext -d '{"name":"World"}' :50052 hello.HelloService/SayHelloServerStream
gRPC hello.HelloService/SayHelloClientStream
Client Streaming - Birden fazla istek, tek yanit.
grpcurl -plaintext -d '{"name":"A"} {"name":"B"}' :50052 hello.HelloService/SayHelloClientStream
gRPC hello.HelloService/SayHelloBiStream
Bidirectional Streaming - Iki yonlu stream.
grpcurl -plaintext -d '{"name":"A"} {"name":"B"}' :50052 hello.HelloService/SayHelloBiStream

22. BadSSL - SSL/TLS Test Scenarios (Ports 10001-10040)

Her senaryo ayri HTTPS portunda calisan Netty sunucu.
Sertifika sifresi: badssl (tum p12 dosyalari)
Senaryo listesi (JSON): /badssl/scenarios | Tek senaryo: /badssl/scenarios/{name}
Root CA: test-root-ca.crt | test-root-ca.p12 (sifre: testca)
All CA Truststore: test-all-truststore.p12 (sifre: badssl)
PortSenaryoAciklamaOrnekSertifika
10001EXPIREDSuresi dolmus SSL sertifikasi curl -k https://:10001/ server.crt
10002WRONG_HOSTFarkli hostname icin verilmis sertifika curl -k https://:10002/ server.crt
10003SELF_SIGNEDSelf-signed sertifika curl -k https://:10003/ server.crt
10004UNTRUSTED_ROOTGuvenilmeyen root CA curl --cacert test-root-ca.crt https://:10004/ server.crt | untrusted-ca.crt
10005REVOKEDRevoke edilmis sertifika curl -k https://:10005/ server.crt
10006INCOMPLETE_CHAINEksik sertifika zinciri curl -k https://:10006/ server.crt
10007SHA1SHA-1 imzali sertifika curl -k https://:10007/ server.crt
10008SHA256SHA-256 imzali curl -k https://:10008/ server.crt
10009SHA384SHA-384 imzali curl -k https://:10009/ server.crt
10010SHA512SHA-512 imzali curl -k https://:10010/ server.crt
10011RSA512512-bit RSA key (zayif) curl -k https://:10011/ server.crt
10012RSA10241024-bit RSA key curl -k https://:10012/ server.crt
10013RSA20482048-bit RSA key (standart) curl -k https://:10013/ server.crt
10014RSA40964096-bit RSA key curl -k https://:10014/ server.crt
10015RSA81928192-bit RSA key curl -k https://:10015/ server.crt
10016ECC256256-bit ECC key curl -k https://:10016/ server.crt
10017ECC384384-bit ECC key curl -k https://:10017/ server.crt
10018TLS_V1_0Sadece TLS 1.0 curl -k --tls-max 1.0 https://:10018/ -
10019TLS_V1_1Sadece TLS 1.1 curl -k --tls-max 1.1 https://:10019/ -
10020TLS_V1_2Sadece TLS 1.2 curl -k --tlsv1.2 https://:10020/ -
10021TLS_V1_3Sadece TLS 1.3 curl -k --tlsv1.3 https://:10021/ -
10022RC4RC4 cipher (zayif) curl -k --ciphers RC4 https://:10022/ -
10023THREE_DES3DES cipher (zayif) curl -k https://:10023/ -
10024NULL_CIPHERNULL cipher (sifreleme yok) curl -k https://:10024/ -
10025DH480480-bit DH curl -k https://:10025/ -
10026DH512512-bit DH curl -k https://:10026/ -
10027DH10241024-bit DH curl -k https://:10027/ -
10028DH20482048-bit DH curl -k https://:10028/ -
10029SUPERFISHSuperfish CA curl -k https://:10029/ server.crt
10030EDELLROOTeDellRoot CA curl -k https://:10030/ server.crt
10031DSDTESTPROVIDERDSDTestProvider CA curl -k https://:10031/ server.crt
10032MOZILLA_OLDMozilla Old TLS (1.0/1.1/1.2) curl -k https://:10032/ -
10033MOZILLA_INTERMEDIATEMozilla Intermediate (1.2/1.3) curl -k https://:10033/ -
10034MOZILLA_MODERNMozilla Modern (sadece 1.3) curl -k --tlsv1.3 https://:10034/ -
10035HSTSHSTS header curl -kI https://:10035/ -
10036NO_COMMON_NAMECN olmayan sertifika curl -k https://:10036/ server.crt
10037NO_SUBJECTSubject olmayan sertifika curl -k https://:10037/ server.crt
10038SANS_10001000 SAN iceren sertifika curl -k https://:10038/ server.crt
10039EXTENDED_VALIDATIONEV sertifikasi curl -k https://:10039/ -
10040CLIENT_CERT (mTLS)Client sertifikasi ZORUNLU curl -k --cert client.crt --key client.key https://:10040/ client.p12 (badssl) | client.crt | client.key
Sertifika Kullanimi:
- Tum server.p12 sifresi: badssl
- Root CA truststore: test-root-ca-truststore.p12 (sifre: badssl)
- All CA truststore: test-all-truststore.p12 (sifre: badssl)
- mTLS client cert: client.p12 (sifre: badssl)
- Intermediate CA: intermediate-ca.crt

23. Apinizer Keystore/Truststore & Downloads

Ana uygulama keystore ve truststore (JKS format).
Keystore: apinizer-keystore.jks (sifre: Apinizer.1, alias: apinizer) Truststore: apinizer-truststore.jks (sifre: Apinizer.1)
Proto dosyasi (gRPC servis tanimi)

24. Proxy Body Integrity

Proxy'nin body'yi bozup bozmadigi testleri. Echo + MD5 hash ile dogrulama.
Large JSON Body
POST /proxy-test/body/large-json/echo
Buyuk JSON body echo — body + size + MD5 doner
POST /proxy-test/body/large-json/verify
Buyuk JSON body verify — sadece size + MD5 (body echo yok)
Binary Body
POST /proxy-test/body/binary/echo
Binary body echo — oldugu gibi geri doner, X-Received-Size/MD5 header'da
POST /proxy-test/body/binary/verify
Binary body verify — sadece metadata
Empty Body
POST /proxy-test/body/empty/echo
Empty body echo — Content-Length:0 kontrolu
POST /proxy-test/body/empty/204
204 No Content — body yok, CL yok
GET /proxy-test/body/empty/200
200 OK + Content-Length:0 — bos body
Multipart & Form
POST /proxy-test/body/multipart/echo
multipart/form-data echo — part metadata + file MD5
POST /proxy-test/body/form/echo
x-www-form-urlencoded echo — double-encode kontrolu
Body Generator
GET /proxy-test/body/generate?size=1024&type=json
Configurable body generator (json|text|binary)

25. Proxy Header Passthrough

Proxy'nin header'lari duzgun iletip iletmedigi testleri.
GET /proxy-test/headers/echo
Tum gelen header'lari JSON echo
GET /proxy-test/headers/hop-by-hop
Hop-by-hop header'lar (Connection, Keep-Alive, Trailer...) — proxy silmeli
GET /proxy-test/headers/duplicate
Duplicate header'lar (3x Set-Cookie, 2x X-Custom, 2x Link)
GET /proxy-test/headers/large-value?size=8192
Buyuk header degeri (default 8KB)
GET /proxy-test/headers/many?count=50
Cok sayida header (default 50)
GET /proxy-test/headers/mirror
X-* header mirror — gelen X- header'lari response'a yansitir
GET /proxy-test/headers/forwarded
Proxy header echo (X-Forwarded-For, X-Real-IP, Via...)
GET /proxy-test/headers/special-chars
Ozel karakter iceren header degerleri (UTF-8, semicolon, comma, quoted)

26. Proxy Timeout & Slow Response

Proxy timeout davranisi, yarim body iletimi testleri.
GET /proxy-test/timeout/slow-header?delay=5000
Slow header — belirtilen sure header gondermeden bekler
GET /proxy-test/timeout/slow-body?chunkDelay=1000&chunks=10
Slow body — header hemen, body yavas (chunked)
GET /proxy-test/timeout/slow-body-with-length?chunkDelay=1000&chunks=5
Slow body + Content-Length — partial body leak testi
GET /proxy-test/timeout/delay?ms=3000
Configurable delay (ms granularite)
GET /proxy-test/timeout/slow-first-byte?delay=5000
Slow first byte — ilk byte gec, sonra hizli
GET /proxy-test/timeout/incomplete
Incomplete response — CL:1000 deyip 10 byte gonderir

27. Proxy URL Handling

URL encoding/decoding, path traversal, query parametre sirasi testleri.
GET /proxy-test/url/echo
URL bilgileri echo (URI, query string, params)
GET /proxy-test/url/tr/şığüöıç
Turkce karakterli path
GET /proxy-test/url/unicode/{path}
Unicode path (emoji, CJK)
GET /proxy-test/url/double-encoded/{path}
Double-encoded URL testi (%2520 vb.)
GET /proxy-test/url/query-order?c=3&a=1&b=2
Query param sirasi koruma testi
GET /proxy-test/url/long?key=very-long-value...
Uzun URL testi (8KB+)
GET /proxy-test/url/path/safe
Path traversal target (/path/../safe)
GET /proxy-test/url/encode-test?value=şığüöıç
URL encode/decode round-trip
GET /proxy-test/url/semicolon/{path}
Semicolon in path (;jsessionid vb.)

28. Proxy Connection & Redirect

Redirect Location header rewrite, backend error handling testleri.
Redirect
GET /proxy-test/connection/redirect/absolute
301 Redirect — absolute URL (backend URL leak testi)
GET /proxy-test/connection/redirect/relative
302 Redirect — relative URL
GET /proxy-test/connection/redirect/307
307 Temporary Redirect — method preservation
GET /proxy-test/connection/redirect/308
308 Permanent Redirect — method preservation
GET /proxy-test/connection/redirect/internal-host
Redirect with internal hostname — hostname leak testi
GET /proxy-test/connection/redirect/target
Redirect target (chain sonu)
Error & Connection
GET /proxy-test/connection/error/502
502 Bad Gateway simulasyonu
GET /proxy-test/connection/error/503?retryAfter=30
503 Service Unavailable + Retry-After
GET /proxy-test/connection/error/504
504 Gateway Timeout simulasyonu
GET /proxy-test/connection/expect-continue
Expect: 100-continue test
GET /proxy-test/connection/close
Connection: close response

29. Proxy CORS

CORS preflight ve header passthrough testleri.
GET /proxy-test/cors/simple
Simple CORS — Access-Control-Allow-Origin: *
GET /proxy-test/cors/specific-origin
Origin-specific CORS — Origin header'ini yansitir
GET /proxy-test/cors/credentials
CORS + credentials — Allow-Credentials: true
OPTIONS/GET /proxy-test/cors/preflight
CORS preflight — full Access-Control-* header seti
OPTIONS/POST /proxy-test/cors/preflight-post
POST preflight — custom header'li POST icin preflight

30. Proxy Cookie Handling

Multi Set-Cookie, path/domain rewrite, cookie passthrough testleri.
GET /proxy-test/cookies/multi-set
5 ayri Set-Cookie header (HttpOnly, Secure, SameSite...)
GET /proxy-test/cookies/path-specific
Path-specific cookie'ler (/, /proxy-test, /proxy-test/cookies...)
GET /proxy-test/cookies/domain-leak
Domain cookie — backend domain leak testi
GET /proxy-test/cookies/echo
Cookie echo — gelen cookie'leri JSON doner
GET /proxy-test/cookies/special-values
Ozel karakterli cookie degerleri (URL-encoded, JSON, bos)

31. Proxy Content-Type & Charset

Charset donusumu, content negotiation, Content-Type edge case'leri.
Charset Variants
GET /proxy-test/content-type/charset/utf-8
UTF-8 — standart (Turkce + CJK + emoji)
GET /proxy-test/content-type/charset/iso-8859-9
ISO-8859-9 (Latin-5 Turkce) — proxy UTF-8 varsayip bozar mi?
GET /proxy-test/content-type/charset/windows-1254
windows-1254 (Turkce Windows charset)
GET /proxy-test/content-type/charset/iso-8859-1
ISO-8859-1 (Latin-1) — aksanli Avrupa karakterleri
Content-Type Edge Cases
GET /proxy-test/content-type/no-content-type
Content-Type olmadan response — proxy default ekler mi?
GET /proxy-test/content-type/mismatch/json-as-xml
CT: application/json ama body XML
GET /proxy-test/content-type/mismatch/xml-as-json
CT: text/xml ama body JSON
GET /proxy-test/content-type/bom/utf-8
BOM (Byte Order Mark) + UTF-8 JSON
GET /proxy-test/content-type/binary
application/octet-stream binary response
GET /proxy-test/content-type/ndjson
application/x-ndjson (Newline Delimited JSON)
GET /proxy-test/content-type/multipart-mixed
multipart/mixed response (JSON + text + XML parts)
Content Negotiation
GET /proxy-test/content-type/negotiate
Accept header'a gore JSON/XML/HTML/text doner

32. Proxy HTTP Methods

HEAD, OPTIONS, PATCH, DELETE with body gibi method-specific testler.
HEAD/GET /proxy-test/methods/head-test
HEAD: body yok, CL + ETag + custom header var. GET: body var.
OPTIONS/GET /proxy-test/methods/options-test
OPTIONS: Allow header ile desteklenen method'lar
ALL /proxy-test/methods/echo
Herhangi HTTP method ile — method echo
PATCH /proxy-test/methods/patch-echo
PATCH body echo
DELETE /proxy-test/methods/delete-with-body
DELETE with body — proxy body'yi drop eder mi?
GET /proxy-test/methods/get-with-body
GET with body — RFC izin verir ama proxy drop edebilir

33. Proxy Security Test

XXE, XSS, rate limit, cache-control, RFC 7807 Problem Details testleri.
POST /proxy-test/security/xml/safe-parse
XML safe parse — DTD/XXE reddi (Content-Type: application/xml)
GET /proxy-test/security/xss/escaped?input=<script>
XSS reflection — HTML-escaped (guvenli)
GET /proxy-test/security/xss/raw?input=<script>
XSS reflection — raw/unescaped (kasitli guvensiz)
GET /proxy-test/security/rate-limit?limit=5&windowSeconds=60
Rate limit simulasyonu — N istekten sonra 429 + Retry-After
GET /proxy-test/security/problem-detail?status=404
RFC 7807 Problem Details (application/problem+json)
GET /proxy-test/security/cache-control?directive=no-store
Cache-Control header variants (no-store|no-cache|private|public|immutable)

Port Ozeti

PortProtokolServis
10090HTTPREST API + SOAP + WebSocket + SSE + Swagger UI + Landing Page
10091WSWebSocket (dedicated, ayri Spring context)
50052gRPC (HTTP/2)HelloService (unary + 3 streaming pattern)
10001-10040HTTPSBadSSL TLS test senaryolari (40 senaryo)

Apinizer Example Services v2026.04.1 | Java 25 + Spring Boot 3.5.3 | 340+ endpoints