JSON config

URL

JSON’dan URL’ye ne işe yarar?

Bir HTTP endpointinin parçalarını — protocol, host, path, query parametreleri, hash — tarif eden bir JSON nesneniz var ve bunu fetch(), curl ya da HTTP istemcinizin yutabileceği tek bir URL stringi olarak istiyorsunuz. JSON’u sola yapıştırın, sağda birleştirilmiş ve yüzde-kodlanmış URL’yi alın. Aynı yön, her backend test fixture’ının, her OpenAPI örneğinin ve her config dosyasının er ya da geç üretmesi gereken yön.

URL’yi birleştirmek için tarayıcının yerel URL constructor’ını ve URLSearchParams’ı kullanır, dolayısıyla kodlama tam olarak WHATWG URL Standard’ın tanımladığı ve gerçek bir tarayıcının göndereceği biçimdedir. Query’deki boşluklar +, köşeli parantezler %5B/%5D olur; aksanlı karakterler ve emojiler UTF-8 yüzde-kodlu hale gelir. Tekrarlanan query key’leri bir array geçirilerek desteklenir — "tag": ["red", "blue"] ifadesi tag=red&tag=blue üretir.

Bu sayfanın varlık nedeni, çoğu projenin URL’leri zaten bir yerlerde JSON olarak tutması — environment dosyaları, Postman koleksiyonları, Cypress fixture’ları, OpenAPI specleri, Helm values. O JSON’u bir script ya da tek seferlik bir curl için gerçek URL stringi olarak istediğinizde, elle dikip toparlamak bug’ların sıkıştığı yerdir. Dönüşüm URL söz dizimi için RFC 3986’yı izler ve girişte RFC 8259’a göre standart JSON’u kabul eder. Her şey lokal çalışır — JSON ve URL tarayıcınızdan dışarı çıkmaz. Ters yön URL’den JSON’a’da.

JSON Nasıl URL’ye Dönüştürülür

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

1

JSON config yapıştırın veya örneği yükleyin

Sola URL parçalarını tarif eden bir JSON nesnesi bırakın. Tek zorunlu alanlar protocol ve host; geri kalan her şey opsiyonel. Örnek’e tıklayarak birden fazla query parametresi ve bir hash içeren gerçekçi bir e-ticaret endpoint’i yükleyin:

{
  "protocol": "https",
  "host": "api.shop.example.com",
  "pathname": "/v1/orders",
  "searchParams": {
    "customer": "Ava Chen",
    "status": "active",
    "total[gte]": "49.99",
    "page": "2"
  },
  "hash": "summary"
}

Opsiyonel alanlar: port, username, password, pathname, searchParams, hash. searchParams içinde string tek değerdir; array tekrarlanan key’lerdir. JSON söz dizimi JSON.parse ile parse edilir — yorum yok, sondaki virgül yok.

2

Birleştirilmiş URL’yi okuyun

Sağ panel siz yazarken güncellenir. Tam URL’yi görürsünüz — https://api.shop.example.com/v1/orders?customer=Ava+Chen&status=active&total%5Bgte%5D=49.99&page=2#summary — her parçası URL standardının tanımladığı şekilde yüzde-kodlanmış halde. Doğrudan bir fetch() çağrısına, bir curl komutuna, bir Postman testine veya tek bir URL stringi bekleyen bir config dosyasına bırakın.

3

Kopyalayın veya indirin

URL’yi panoya göndermek için Kopyala, metin dosyası olarak kaydetmek için İndir. Sıfırdan yeni bir config’le başlamak için input panelinde Temizle’yi kullanın.

Bunu gerçekten ne zaman kullanırsınız

OpenAPI örneklerini çalıştırılabilir curl komutlarına dönüştürmek

OpenAPI specleri sunucuları {url, variables} olarak, operasyonları parameters içeren path’ler olarak tanımlar. Bu parçalardan elle gerçek URL’yi tek seferlik bir curl için kurmak zahmetlidir — path değişkenlerini yerine koymak, query parametrelerini kodlamak, sondaki slash’ı doğru ayarlamak. Birleştirilmiş JSON’u buraya bırakın, URL’yi kopyalayın, curl’a yapıştırın. Birleştirilmiş şekil OpenAPI server-object’in tanımladığıyla örtüşür.

Environment değişkenlerinin parçalarından URL kurmak

12-factor bir uygulama URL parçalarını ayrı env değişkenlerinde tutar: API_HOST, API_PORT, API_BASE_PATH, API_TOKEN_PARAM. Olay müdahalesi sırasında bir doğrulama curl’u için tam URL’yi üretmek için bunları birleştirirsiniz. JSON şeklini bu sayfaya yapıştırın, URL’yi alın, çalıştırın. Bash’te scriptlemekten daha hızlı ve + içeren bir token’ı kodlamayı unutma riski yok.

URL’leri obje olarak saklayan Cypress ve Playwright fixture’ları

Test fixture’ları çoğu zaman istek URL’lerini, parçaları (orderId path param’ı, page query param’ı) tek tek assert edebilmek için yapılandırılmış halde tutar. Fixture aynı zamanda gerçek bir HTTP çağrısı yapması gerektiğinde (örneğin cy.request veya page.goto ile veri seed’lemek), yapılandırılmış şeklin tekrar string olması gerekir. JSON’dan URL’ye, Marco Rivera’nın kaydettiği fixture nesnesini test koşumunun vurabileceği URL’ye çevirir.

Tenant bazlı configlerden kurulan webhook URL’leri

Çok kiracılı sistemler webhook configlerini müşteri bazında saklar: {host: "hooks.tenant-a.example.com", pathname: "/orders/ORD-1001/notify", searchParams: {token: "..."}}. Dispatcher JSON’u okur ve POST atacak bir URL stringine ihtiyaç duyar. Bu sayfanın yaptığı dönüşümün aynısı, sadece runtime’da. Kodunuzun üreteceği URL’nin müşterinin kaydettiğiyle eşleştiğini doğrulamak için sayfayı kullanın.

Sık Sorulan Sorular

Bunun URL Builder sayfasından farkı ne?

Aynı motor, farklı çerçeveleme. URL Builder, sıfırdan oturup bir URL kurduğunuz durum için — bir istek bestelersiniz. JSON’dan URL’ye, JSON’un zaten bir yerde var olduğu (bir config, bir OpenAPI spec’i, bir fixture, bir env-var bölünmesi) ve onu bir kod parçasının beklediği URL stringine çevirmeniz gereken durum için. Ne yaptığınıza uyan çerçevelemeyi seçin — çıktı aynıdır.

Benim JSON’um URL’yi farklı tutuyor — herhangi bir şekil kullanabilir miyim?

WHATWG URL parça adlarına ihtiyacı var: protocol, host, port, username, password, pathname, searchParams (nesne), hash. JSON’unuz farklı key’ler kullanıyorsa (scheme, baseUrl, query, fragment), önce yeniden adlandırın. Bu şekil new URL(...)’ün açtığı ve URL spec’inin tanımladığını yansıtır, dolayısıyla fetch ve Node’un içeride kullandığı modelle hizalanmış olursunuz.

Aynı query parametresini iki kez nasıl gönderirim (örn. ?tag=red&tag=blue)?

Değer olarak bir array kullanın: "tag": ["red", "blue"]. Dönüştürücü, verdiğiniz sırayla tag=red&tag=blue üretir. Bu, URLSearchParams’ın tekrarlanan key’leri ele alış biçimine uyar ve çoğu sunucunun (Express, Rails, ASP.NET) array tarzı query parametreleri için beklediği şekildir.

Boşluğum neden %20 yerine + oluyor?

Query bileşenindeki boşluklar application/x-www-form-urlencoded kurallarına göre + olarak kodlanır — URLSearchParams bunu üretir. Path’teki boşluklar %20 olarak kodlanır. Her ikisi de RFC 3986’ya göre geçerlidir ve her sunucu her iki biçimi de çözer. Sunucunuz query’de yalnızca %20’yi kabul ediyorsa, bug sunucu tarafındadır.

URL’ye kimlik bilgilerini (kullanıcı adı/parola) dahil edebilir miyim?

Evet — JSON’da "username" ve "password"’yi ayarlayın. Host’tan önce user:pass@host olarak görünürler. RFC 3986 §3.2.1 bunu üretim URL’lerinde yapmamayı söyler çünkü tarayıcı geçmişine, sunucu loglarına ve proxy önbelleklerine düşerler — hızlı bir lokal test için tamam, paylaşılan configlerde değil.

URL hiç tarayıcımdan dışarı çıkıyor mu?

Hayır. JSON parse’ı sekmenizdeki JSON.parse; URL kurulumu sekmenizdeki new URL(...); ikisi de bir sunucuya çağrı yapmaz. Upload yok, log yok. Sayfayı bir kez internetle açıp ardından bağlantıyı kesip cache’den kullanmaya devam edebilirsiniz.

Diğer URL ve JSON Araçları

JSON’dan URL’ye, gidiş-dönüşün yarısı. Setin geri kalanı: