URL

JSON

URL’den JSON’a ne işe yarar?

Sola bir URL yapıştırıyorsun, sağda URL’nin her parçası adlandırılmış halde bir JSON nesnesi çıkıyor — protocol, host, pathname, searchParams, hash, hepsi. Mesele bir kez bakıp geçmek değil. Mesele bu JSON’u kalıcı olarak yaşayacağı bir yere kopyalamak — bir config dosyası, bir Jest fixture’ı, bir Postman environment’ı, bir YAML manifesto, testlerin için bir request mock. URL string’leri yazması kolaydır ama assertion’ı zordur; yapılandırılmış nesneler ise tam tersi.

Kaputun altında bütün tarayıcıların kullandığı algoritmanın aynısı çalışıyor: URL API, ki bu WHATWG URL Standard’ı uygular. Query parametreleri yol üstünde decode ediliyor — %20 boşluğa, %5B ise [’ye dönüşüyor, tekrar eden anahtarlar bir JSON dizisine toplanıyor — URLSearchParams’tan aldığın davranışın aynısı. Çıktı sonra bu sitedeki diğer JSON araçlarının kullandığı JSON.stringify kurallarıyla biçimlendiriliyor.

Sadece bir URL’nin parçalarına ekranda göz atmak istiyorsan — bir yönlendirmeyi debug etmek, tracker zincirine bakmak — URL Parser sayfası daha uygun. İki sayfa da aynı dönüşümü yapıyor; bu sayfa, JSON’un kendisinin saklamak istediğin çıktı olduğu durum için çerçevelendi. Her şey tarayıcına özel, yükleme yok, log yok. Dönüşüm söz dizimi için RFC 3986’ya, JSON çıktısı için RFC 8259’a uyuyor.

Bir URL’yi JSON’a nasıl dönüştürürsün

Üç adım. Her biri bu sayfadaki bir butona karşılık geliyor.

1

URL yapıştır ya da örneği yükle

Sol panele bir URL bırak. Örnek’e basarsan percent-encoding, tekrar eden query anahtarları ve hash fragment’ı içeren gerçekçi bir e-ticaret URL’si yüklenir. Örnek:

https://api.shop.example.com/v1/orders?customer=Ava%20Chen&status=active&total%5Bgte%5D=49.99&page=2#summary

URL constructor’ın kabul ettiği her şey çalışır — <code>http://</code>, <code>https://</code>, <code>file://</code>, <code>mailto:</code>, IPv6 host’lar ve userinfo dahil.

2

JSON çıktısını oku

Sağ panel sen yazarken güncellenir. protocol, host, port, pathname, pathSegments (path’in dizi olarak ayrılmış hali), searchParams (decode edilmiş anahtar/değer çiftleri, tekrar eden anahtarlar için diziler) ve hash görürsün. href alanı URL’nin kanonik, normalize edilmiş halini taşır — biri varsayılan port veya sondaki slash içerse bile iki URL’nin denk olduğunu doğrulamak istediğinde işine yarar.

3

Fixture’ın için kopyala, indir ya da sıkıştır

Kopyala’ya basarsan JSON panoya gider, İndir’le url.json olarak kaydedersin, Sıkıştır’la log girdisi ya da query parametresi için tek satıra düşürürsün. Giriş panelindeki Temizle her iki editörü de sıfırlar.

Bunu gerçekten ne zaman kullanırsın

HTTP istek fixture’ları kurmak

Testlerin bir URL’ye karşı assertion yapıyorsa, string üzerinden assertion kırılgandır — case, varsayılan portlar, sondaki slash, parametre sırası hepsi ısırır. URL’yi JSON’a çevir, nesneyi fixture’ına koy ve alan alan assert et. URL şekli üzerinden eşleyen Mock Service Worker veya Nock gibi kütüphanelerle güzel uyuşur.

Config dosyalarında API client’larını seed etmek

Base URL’yi tek bir string olarak saklayan bir YAML ya da JSON config, her tüketiciyi onu yeniden parse etmeye zorlar. Önceden ayrıştırılmış halde saklamak (host, port, basePath, defaultParams) config’i kendini açıklayan hale getirir ve "sondaki slash’ı unuttuk mu?" cinsinden bütün bir bug sınıfını eler. SDK üreticileri ve OpenAPI araçlarında işe yarar.

OAuth ve webhook callback dokümantasyonu

"Senin callback URL’in şuna benzer" diye yazan dokümantasyon yazıyorsan, ham URL’nin yanına bir JSON dökümü koymak okuyana çok daha sıcak gelir. RFC 6749 gibi standartlar belirli query parametreleri ister; yapılandırılmış biçim "burada state görmelisin"i bir bakışta ortaya koyar.

Postman / Bruno / HTTPie environment export’ları

Çoğu API client URL’leri içeride ayrıştırılmış nesneler olarak saklar. Eski URL’leri yeni bir koleksiyona import ediyorsan — örneğin endpoint’leri düz string olarak listeleyen bir doc sitesinden taşıyorsan — onları önce JSON’a çevirmek import’u 200 endpoint’i elle tıklamak yerine script’lemene izin verir.

Sık sorulan sorular

URL Parser sayfasından farkı ne?

Aynı motor, farklı çerçeveleme. URL Parser incelemek için — uzun bir URL yapıştırıyorsun, parçalara bakıyorsun, neyin yanlış olduğuna karar verip sekmeyi kapatıyorsun. URL’den JSON’a ise sonucu alıp başka bir yerde kullanmak için — bir fixture dosyası, bir config, bir Postman environment’ı. JSON çıktısı aynı; metinler ve kullanım senaryoları "bunu bir dosyada istiyorum" akışına göre ayarlandı.

Çıktı neden YAML ya da JS object literal değil de JSON?

JSON en küçük ortak payda — her dil, her config sistemi, her test framework’ü okuyor. YAML lazımsa JSON’u JSON’dan YAML’a aracımızdan geçir. JS object literal lazımsa JSON zaten geçerli JS — direkt .ts dosyana yapıştır. Dönüşüm RFC 8259’a uyuyor, dolayısıyla çıktı JSON’un kabul edildiği her yerde çalışır.

Tekrar eden query anahtarları nasıl gösteriliyor?

Tekrar eden anahtarlar bir diziye toplanır. ?tag=red&tag=blue, "tag": ["red", "blue"] olur. Express, FastAPI, ASP.NET, Spring ve çoğu framework’ün query string parse etme şekli bu — ve URLSearchParams.getAll()’ın döndürdüğü de bu.

Peki ?items[]=1&items[]=2 gibi köşeli parantez notasyonundaki diziler?

Köşeli parantezler anahtarın parçası olarak korunur — çıktıda "items[]": ["1", "2"] görürsün. Bu kablodaki byte’ların sadık bir temsilidir. Senin framework’ün (PHP, Rails, qs.js) parantezleri sıyırmaya ya da iç içe nesneye açmaya ihtiyaç duyarsa, bunu JSON üzerinde bir post-processing adımında yap.

URL’imde user:pass@host varsa JSON parolayı içerir mi?

Evet — URL’inde varsa username ve password alanları çıktıda görünür. Dönüşüm tamamen tarayıcında çalışıyor, dolayısıyla kimlik bilgilerin makineni hiç terk etmiyor. Bununla birlikte, URL’ye kimlik bilgisi koymak genelde kötü bir fikir (bkz. RFC 3986 §3.2.1) ve JSON’u bir repo’ya commit etmeden önce bunları neredeyse kesinlikle çıkarmak isteyeceksin.

Bir URL listesini tek seferde dönüştürebilir miyim?

Bu sayfada hayır — her oturum tek bir URL’yi dönüştürür. Yüz tane URL işlemen gerekiyorsa en kolay yol, bu sayfanın çıktı yapısını küçük bir script’e yapıştırıp döngüye almak. Ya da batch’i kendin script’ledikten sonra JSON Formatter’ımızı kullan. Toplu dönüşüm bir UI özelliği olarak yol haritasında ama henüz çıkmadı.

Diğer URL & JSON araçları

Dönüşüm tek bir işlem. Bunlar onunla doğal olarak yan yana gider: