5 dakikalık okumaMühendislik

TinyURL Geçiş İçe Aktarıcısı: Nasıl Çalışır ve Eksikleri

Elido'nun TinyURL içe aktarıcısı nasıl çalışır: jeton, alias, çakışma kuralları, sınırlar ve TinyURL'de olmayan bir uç noktayı çağıran bilinen hata.

Marius Voß
DevRel · edge infra
Boru hattı diyagramı: bir TinyURL API jetonu Elido içe aktarma işçisini besliyor; işçi, suffix, skip veya fail çakışma kuralları altında bağlantıları links tablosuna yazıyor

TinyURL geçiş içe aktarıcısı bir API jetonu, bir hedef Elido alan adı ve bir çakışma stratejisi alır, ardından TinyURL bağlantılarınızı tek bir arka plan işi olarak Elido'ya kopyalar. Ciddi bir bilinen kusuru var: api.tinyurl.com üzerinde GET /aliases çağırıyor ve bu yol TinyURL'nin yayımlanmış API'sinde yok. Bu yazı, içe aktarıcının ne yaptığını, nelerin doğrulandığını ve nelerin doğrulanmadığını anlatıyor.

TinyURL'den ayrılmayı planlamak için nasıl yapılır rehberini (nelerin yönlendirilebileceği, CSV eşlemesi, geçiş kontrol listesi) istiyorsanız TinyURL'den geçiş yazısını okuyun. Bu yazı mühendislik tarafı.

Bilinen hata

İçe aktarıcının sayfa getirme adımı şu isteği oluşturur:

GET https://api.tinyurl.com/aliases?page=1&per_page=100
Authorization: Bearer <token>

ve karşılığında {"data": [{alias, url, title, tags}], "meta": {"total", "has_more"}} bekler.

TinyURL'nin OpenAPI belirtimi (erişim 2026-10-02) bir /aliases yolu tanımlamıyor. Listeleme GET /urls/{type} ile yapılır; burada type, available veya archived olur ve isteğe bağlı from, to ile search (bir alias: veya tag: öneki) filtreleri vardır. Belirtim hiçbir page veya per_page parametresi ve hiçbir hız sınırı tanımlamıyor. Alias işlemleri /alias/{domain}/{alias} altında bulunuyor.

Yani koddaki sayfalama sözleşmesi hiçbir zaman TinyURL'den alınmadı. Birim testimiz bu biçimde elle yazılmış bir yanıt sunuyor ve geçiyor; bu, ayrıştırıcının varsayımımızla eşleştiğini kanıtlıyor, TinyURL hakkında hiçbir şey kanıtlamıyor. İçe aktarıcıyı canlı bir TinyURL hesabına karşı çalıştırmadık, çünkü bu ücretli plan jetonu gerektiriyor. Bunu yapana kadar bir geçişi buna dayanarak planlamayın. Düzeltme dahili geride bekleyen işlerimizde izleniyor: /urls/available (ve bir bayrağın arkasında /urls/archived) kullanımına geçmek, from/to pencereleriyle sayfalamak, savunmacı biçimde ayrıştırmak ve gerçek yakalanmış bir yanıta karşı test etmek. Gerçek yanıtın bir liste mi yoksa tek bir nesne mi taşıdığı, belirtimin belirsiz bıraktığı bir şey.

İşçi bir sayfa aldıktan sonra ne yapıyor

Geçiş kaynaklarının başlatıldığı, demo bir çalışma alanındaki Elido pano entegrasyonlar sayfası

Sentetik verili bir DEMO çalışma alanındaki entegrasyonlar sayfası. TinyURL geçişi buradan başlatılır.

HTTP çağrısından sonrası her şey uç nokta sorusundan bağımsızdır. Bu kısmı koddan söyleyebiliriz.

  • Başlatma. token, target_domain_id ve isteğe bağlı conflict_strategy ile POST. İşleyici boş bir jetonu, eksik bir alan adını ve suffix, skip, fail dışındaki her stratejiyi reddeder; sonra işle birlikte 202 yanıtlar ve işçiyi istekten ayrılmış bir arka plan goroutine'inde çalıştırır.
  • Bağlantı başına. URL'si veya alias'ı olmayan bir satır, bir nedenle birlikte başarısız sayılır. Aksi halde alias slug olur, hedef ve başlık kopyalanır (başlık 200 karaktere kesilir) ve etiketler imported:tinyurl eklenerek kopyalanır.
  • İlerleme. Sayaçlar her 50 bağlantıda iş satırına yazılır. İş başına en fazla 1.000 hata satırı günlüğe kaydedilir.
  • Kimlik doğrulama ve hız hataları. Bir 401 veya 403, işi "bearer jetonunu kontrol edin" mesajıyla başarısız kılar; bir 429 ise hız sınırlı olarak başarısız kılar. Yeniden deneme ya da geri çekilme yoktur: iş durur.

Çakışma kuralları

Bir demo çalışma alanında kısa bağlantıları, hedefleri, etiketleri, 30 günlük tıklamaları ve durumu gösteren Elido bağlantı listesi

Bir DEMO çalışma alanındaki bağlantı listesi. İçe aktarılan bağlantılar imported:tinyurl etiketini taşır; böylece bir grubu inceleme için filtreleyebilirsiniz.

Her eklemeden önce işçi (domain, slug) için tek bir dizinli arama yapar.

  • suffix (varsayılan) alias-2, alias-3 gibi alias-50'ye kadar dener ve hepsi doluysa satırı başarısız kılar.
  • skip mevcut Elido bağlantısına dokunmaz ve kaynak satırı günlüğe kaydeder.
  • fail ilk çakışmada işi başarısız kılar.

TinyURL bunlara alias der, Elido slug der. Aynı şey: ana bilgisayardan sonraki karakterler. Hedef alan adınız boşsa alias'lar değişmeden taşınır.

Sınırlar

Her geçiş satıcısı tarafından kullanılan tek bir ortak sabit kümesi: çalışma başına 50.000 bağlantı, 30 dakikalık bütçe, her 50 bağlantıda ilerleme, 1.000 günlüğe kaydedilen hata.

İki davranışı bilmekte fayda var. 50.000 sınırına ulaşıldığında döngü basitçe durur ve iş tamamlanır; başarısız olmaz ve sizi kimseyle iletişime geçmeye yönlendirmez. Nihai sayıları kaynak toplamınızla karşılaştırın. 30 dakikalık bütçe dolduğunda iş, o ana kadar içe aktarılan sayıyla birlikte başarısız işaretlenir.

İşçi api-core içinde yaşar. Çalışma ortasındaki bir dağıtım ya da çökme onu öldürür ve her beş dakikada bir çalışan bir süpürme, 30 dakika boyunca ilerleme kaydetmeyen işleri failed durumuna çevirir. Kayıtlı bir imleç yoktur; bu yüzden işi yeniden başlatırsınız. Yeniden çalıştırmak suffix veya skip altında güvenlidir; ancak suffix altında ilk çalışmanın zaten yazdığı bağlantıların -2 kopyalarını oluşturur, bu yüzden yeniden çalıştırma için skip tercih edin.

Jeton yönetimi

Jeton istek gövdesinden goroutine'e gider ve başka hiçbir yere gitmez. İş satırı hiçbir jeton kaydetmez ve hiçbir şey depolanmadığı için diskte şifrelenen bir şey yoktur. İstek gövdesi 4 KB sınırıyla okunur.

Kodun yapmadıkları: başlamadan önce jetonu doğrulamaz ve planı kontrol etmez. Kötü bir jeton, bir form hatası olarak değil, ilk istekten sonra başarısız bir iş olarak ortaya çıkar. Bu yazının önceki sürümleri, bir alan adları uç noktasına karşı bir ön kontrol adımını anlatıyordu. O adım kodda yok ve TinyURL'nin belirtiminde de böyle bir yol yok.

Nelerin taşınmadığı

  • Tıklama geçmişi. İçe aktarıcı yalnızca bağlantı alanlarını okur. Yeni tıklamalar, bir bağlantı Elido'da yayına girdiği andan itibaren sayılır.
  • QR stili, şablonlar, markalı alan adı ayarları. Okunmaz. Markalı bir ana bilgisayar adı ayrı bir adımdır: onu bir Elido alan adı olarak ekleyin ve DNS'i değiştirin; bu, kısa bağlantılar için özel alan adları yazısında anlatılıyor.
  • Hesapsız bağlantılar. Hiçbir jeton bunları listeleyemez.

İçe aktarıcı alan adını sizin için oluşturmaz, bir TinyURL domain alanını ele almaz ve kendi CSV yüklemesi yoktur. Dosya tabanlı geçişler için toplu içe aktarma formunu veya Google Sheets'ten toplu içe aktarma içindeki adım adım anlatımı kullanın.

Test etmek ve onu atlatmak

İki pratik bölüm geliyor. İçe aktarıcıyı test etmek. Onsuz taşınmak.

Bir içe aktarmayı kontrol etmenin güvenli yolu

Uç nokta düzeltildiğinde ya da o zamana kadar içe aktarıcıyı kendiniz test ederseniz, küçük başlayın. Geçici bir çalışma alanı oluşturun, boş bir alan adı ekleyin ve işi önce fail stratejisiyle çalıştırın. Boş bir alan adı çakışma olmaması demektir; bu yüzden herhangi bir başarısızlık bir çakışma değil, bir ayrıştırma ya da kimlik doğrulama sorunudur. Ardından üç sayıyı karşılaştırın: TinyURL'deki kaynak sayısı, işin bildirdiği total ve içe aktarılan artı atlanan artı başarısız sayaçları. İşçi meta.total değerini beklediği yanıttan aldığı için, total ile gerçek sayınız arasındaki bir uyumsuzluk, yanıt biçiminin ayrıştırıcının varsaydığından farklı olduğunun ilk işaretidir.

Sonra bağlantı listesini imported:tinyurl ile filtreleyin ve rastgele on bağlantıyı açın. Hedefi, slug'ı ve başlığı TinyURL'ye karşı kontrol edin. Bundan sonra, herhangi bir yeniden çalıştırma için skip stratejisine geçin.

İçe aktarıcı olmadan TinyURL'den nasıl dışa aktarılır

Belgelenmiş listeleme çağrısı, bir bearer jetonuyla GET /urls/available ve arşivlenmiş bağlantılar için GET /urls/archived'dır. Belirtim hiçbir sayfa parametresi vermediği için, hesap büyükse sonucu from ve to tarih-saatleriyle daraltın. Başka bir şey yapmadan önce çıktıyı bir dosyaya yazın, onu destination, slug, title biçimine indirin ve toplu formla yükleyin. Bu eşlemenin ayrıntıları nasıl yapılır rehberinde. Canlı yanıt biçimini de doğrulamadık; bu yüzden bir betik yazmadan önce bir yanıtı elle inceleyin.

Sırada ne var

Sıra şu: uç noktayı düzeltmek, gerçek yakalanmış bir yanıtı test fikstürü olarak eklemek, ardından nasıl yapılır rehberindeki ve geçiş açılış sayfasındaki her rakamı yeniden kontrol etmek. Belirtim ikisini de vermediği için sayfalama ve gerçek istek başına sınır, canlı bir hesaba karşı yeniden ölçülmeli. Bundan önce TinyURL'den ayrılmanız gerekiyorsa, seçenekleri Elido vs TinyURL ve TinyURL alternatifleri yazılarında karşılaştırın ve CSV yolunu kullanın.

Blogda ilgili yazılar

Sıkça sorulan sorular

Elido TinyURL içe aktarıcısı bugün çalışıyor mu?

Doğrulanmamış kabul edin. İşçi, api.tinyurl.com üzerinde GET /aliases?page=N&per_page=100 isteği gönderir. TinyURL'nin OpenAPI belirtiminde (erişim 2026-10-02) /aliases yolu yoktur; bağlantılar GET /urls/{type} ile listelenir. Gönderilen birim testi yalnızca varsaydığımız yanıt biçimini kontrol eder. Bir düzeltme geride bekleyen işlerimizde ve o gelene kadar güvenilir yol bir CSV veya toplu yapıştırmadır.

İçe aktarıcı her TinyURL bağlantısından neyi kopyalıyor?

Hedef URL, alias (slug olarak kullanılır), başlık ve etiketler; ayrıca oluşturduğu her bağlantıda bir imported:tinyurl etiketi. Tıklama geçmişini, QR stilini veya başka hiçbir şeyi kopyalamaz.

Bir alias Elido'da zaten varsa ne olur?

İş başına bir strateji seçersiniz. Suffix, alias-2, alias-3 gibi alias-50'ye kadar dener; skip mevcut bağlantıyı bırakır ve satırı günlüğe kaydeder; fail ise ilk çakışmada işi başarısız işaretler. Varsayılan suffix'tir.

TinyURL jetonum saklanıyor mu?

Hayır. Başlatma isteği jetonu bir arka plan goroutine'ine taşır ve iş satırı hiçbir jeton referansı saklamaz. Jeton, çalışma süresince yalnızca işlem belleğinde bulunur.

Bir içe aktarmanın ele aldığı bağlantı sayısında bir sınır var mı?

Evet. Bir çalışma, hangisi önce gelirse, 50.000 bağlantıdan ya da 30 dakikadan sonra durur. Bağlantı sınırında iş, ilk 50.000'i ele alınmış olarak tamamlandı şeklinde biter; bu yüzden sayıları kaynağınızla karşılaştırın.

Ücretsiz bir TinyURL hesabından geçiş yapabilir miyim?

TinyURL, bağlantı listelemeyi bir API jetonuna bağlar ve oturum açmadan oluşturulan bağlantılar hiçbir hesaba ait değildir; bu yüzden listelenecek bir şey yoktur. Hedef listesini kendiniz yeniden oluşturun ve toplu içe aktarmayı kullanın.

Elido'yu deneyin

Bir URL yapıştırın, çalışan bir kısa bağlantı alın

Kayıt gerekmez. Bağlantı 30 gün boyunca yaşar. Sonsuza kadar saklamak için kaydolun.

Ücretsiz, kayıt gerekmez · Günde 2

Elido'yu deneyin

Özel alan adları, derinlemesine analitik ve açık bir API'ye sahip AB'de barındırılan URL kısaltıcı. Ücretsiz katman - kredi kartı gerekmez.

Etiketler
tinyurl migration
url shortener
go worker
data migration
engineering
tier 3 integrations

Okumaya devam et