Formatter
/api/v1

API belgeleri

Tek bir POST isteği bir dosyayı biçimlendirir. Anahtar yok, hesap yok, imza yok: adres ile gövde, sözleşmenin tamamı.

Hızlı başlangıç

Bir stil dosyasını küçültün ve sonucu yazdırın:

curl
curl --data-urlencode 'input=.card { padding: 8px; margin: 0 auto; }' \
  https://formatter.nextwell.top/api/v1/minify/css/raw
# .card{padding:8px;margin:0 auto}

{css} yerine {js} ya da {html}, {minify} yerine {beautify} yazın. Her kombinasyon çalışır.

Uç noktalar

Temel adres {base}. Aksi belirtilmedikçe aşağıdakilerin hepsi POST'tur.

Yöntem Yol Amaç
POST/api/v1/minify/{lang}Küçültme, JSON yanıt
POST/api/v1/minify/{lang}/rawKüçültme, düz metin yanıt
POST/api/v1/beautify/{lang}Biçimlendirme, JSON yanıt
POST/api/v1/beautify/{lang}/rawBiçimlendirme, düz metin yanıt
GET/api/v1/limitsBu IP'ye kalan hak, istek harcamadan
GET/api/v1/healthCanlılık kontrolü, hiçbir zaman limite takılmaz

{lang}, css, js veya html olabilir.

Kodu göndermek

Her uç nokta üç gövde biçimini kabul eder; istemcinizde hangisi kolaysa onu seçin.

Form kodlamalı

{type} olarak bir {input} alanı. Küçültme API’lerinin alışılmış olarak beklediği biçim budur, yani mevcut bir betikte yalnızca adres değişir.

curl
curl --data-urlencode 'input=body{margin:0;padding:0}' \
  https://formatter.nextwell.top/api/v1/beautify/css

JSON

{input} dizesini içeren {type}.

curl
curl -H 'Content-Type: application/json' \
  -d '{"input":"const a=1;const b=a+1;console.log(b)"}' \
  https://formatter.nextwell.top/api/v1/beautify/js

Ham gövde

Başka herhangi bir içerik türü: gövdenin kendisi koddur. {example} için kullanışlı.

curl
curl --data-binary @style.css \
  -H 'Content-Type: text/css' \
  https://formatter.nextwell.top/api/v1/minify/css

Boyut

İstek başına 2 MB. Daha büyüğü okunmadan 413 ile geri döner.

Sorgu parametreleri

Ad Değerler Anlamı
engine auto upstream local Bu isteği hangi motorun karşılayacağı. Varsayılan olan {auto}, kota bitene kadar CSS ve JS küçültmesini dış servise gönderir, kota bittiğinde yerel motora düşer. {upstream} yerele düşmek yerine hata döndürür. {local} sunucudan hiç çıkmaz.
indent 2 4 tab Yalnızca biçimlendirmede: bir girinti seviyesinin ne olduğu.
curl
curl --data-urlencode 'input=.a{color:red}' \
  'https://formatter.nextwell.top/api/v1/beautify/css?indent=tab&engine=local'

Yanıt

Başarılı bir çağrı JSON döndürür:

JSON
{
  "ok": true,
  "action": "minify",
  "language": "css",
  "engine": "upstream",
  "input_bytes": 1024,
  "output_bytes": 640,
  "saved_bytes": 384,
  "saved_percent": 37.5,
  "duration_ms": 42,
  "output": "p{color:red}"
}
Alan Tür Anlamı
okbooleanBaşarı durumunda her zaman true.
actionstringminify ya da beautify: ne istendiyse o.
languagestringcss, js veya html.
enginestringİşi dış servis yaptıysa upstream, bu sunucu yaptıysa local.
input_bytesnumberGönderilenin bayt cinsinden boyutu.
output_bytesnumberSonucun bayt cinsinden boyutu.
saved_bytesnumberAradaki fark; biçimlendirmede negatif olur.
saved_percentnumberAynı fark, tek ondalıklı yüzde olarak.
duration_msnumberİşin ne kadar sürdüğü, milisaniye.
outputstringBiçimlenmiş kodun kendisi.

Düz metin yanıtlar

Herhangi bir biçimlendirme uç noktasının sonuna {raw} ekleyin; gövde yalnızca sonuçtan ibaret olur, {type} olarak. Başlıklar aynıdır. Çağıran taraf bir kabuksa kullanışlıdır:

curl
curl -s --data-binary @app.js \
  -H 'Content-Type: text/javascript' \
  https://formatter.nextwell.top/api/v1/minify/js/raw > app.min.js

Yanıt başlıkları

Başlık Anlamı
X-Formatter-EngineSonucu hangi motorun ürettiği.
X-Formatter-DurationMilisaniye cinsinden işlem süresi.
X-RateLimit-Remaining-Second-MonthBu IP için her pencerede kalan hak.
Retry-After429 durumunda: tükenmiş pencerelerin en darının yeniden açılmasına kalan saniye.
curl
curl -s -D - -o /dev/null --data-urlencode 'input=.a{color:red}' \
  https://formatter.nextwell.top/api/v1/minify/css

Hatalar

Her hata, bu türden bir API için alışılmış biçimde JSON’dur; yani o biçimi zaten işleyen bir istemci bizimkileri de işler:

JSON
{
  "errors": [
    { "status": 429, "title": "Too many requests", "detail": "…" }
  ]
}
Durum Başlık Ne zaman
400Missing input Bad requestGövde yok ya da input alanı boş.
404Not foundBöyle bir yol yok.
405Method not allowedBir biçimlendirme uç noktası POST dışında bir yöntemle çağrıldı.
413Payload too largeGövde 2 MB'ı aşıyor.
415Unsupported languageYoldaki dil css, js veya html değil.
422Malformed inputBiçimlendirici kaynak kodu reddetti; genellikle bir sözdizimi hatası.
429Too many requestsİstek limiti pencerelerinden biri tükendi. Retry-After değerine bakın.
502Upstream failedYalnızca engine=upstream ile: dış servis yanıt vermedi. Bu ayar olmasaydı istek yerel motora düşerdi.
500Internal errorDiğer her şey.

İstek limitleri

IP adresi başına beş kayan pencere, hepsi aynı anda uygulanır. Bir isteğin beşine birden sığması gerekir.

Pencere Limit
Saniyede{n} istek
Dakikada{n} istek
Saatte{n} istek
Günde{n} istek
Ayda{n} istek

Bir pencere tükendiğinde yanıt 429 olur ve Retry-After başlığı en dar pencerenin yeniden açılmasına kaç saniye kaldığını verir. Hiçbir istek kuyruğa alınmaz.

Sayaçlar diskteki küçük bir veritabanında tutulur, bu yüzden servisi yeniden başlatmak kimseye yepyeni bir gün kazandırmaz.

{endpoint}, hiçbirini harcamadan beş pencerenin de güncel durumunu bildirir.

curl
curl https://formatter.nextwell.top/api/v1/limits

Dış küçültme servisi, ziyaretçi başına değil, sitenin tamamı için dakikada 30 isteğe izin verir. Bunu ortak bir kova takip eder: kova boşaldığında CSS ve JS küçültme, beklemek ya da hata vermek yerine yerel motorla yapılır. Yoğunluk altında engine alanının değiştiğini görebilirsiniz; çıktı her iki durumda da geçerli kalır.

İşi hangi motor yapar

İki yol, tek sözleşme.

Bulut — CSS ve JS küçültme

Dış bir küçültme servisi; hızlı ve temkinlidir: kaldırılabilecek boşlukları kaldırır, kaldırılamayacakları korur, böylece {calc} gibi şeyler olduğu gibi kalır. Bu servis kodu yalnızca aktarır, kendinden hiçbir şey eklemez.

Yerel — geri kalan her şey

HTML küçültme, üç biçimlendiricinin hepsi ve ortak dış kota bittiğinde ya da servis çevrimdışı kalacak şekilde ayarlandığında CSS/JS küçültme. {tools} üzerine kuruludur; boştaki sürecin küçük kalması için bunlar yalnızca bir istek gerektirdiğinde yüklenir.

Bir isteği tek bir yola sabitlemek için {param} kullanın.

Ne saklanıyor

Hiçbir şey. Kod, istek süresince bellekte tutulur ve sonra atılır. Diske yazılmaz, hiçbir günlükte görünmez. Günlüklerde yer alanlar: IP'nin kısaltılmış bir hash'i, dil, işlem, bayt sayısı, motor ve süre.

Sorular

Anahtar gerekiyor mu?

Hayır. Servis herkese açıktır, bunun yerine IP adresine göre sınırlanır.

Kodum bir yere gönderiliyor mu?

CSS ve JavaScript küçültme, dış bir küçültme servisine yönlendirilir; yani o kod bu sunucudan çıkar. Biçimlendirme ve tüm HTML işleri bu sunucuda yapılır. Her şeyin burada kalması için engine=local kullanın.

Derleme betiğinde kullanabilir miyim?

Evet, raw uç noktaları tam da bunun için var. Limitlerin içinde kalın ve yoğunluk altında motorun yerele düşebileceğini unutmayın.

Küçültülmüş JavaScript'imdeki adlar neden değişmiş?

Dış küçültücü yerel değişken adlarını kısaltır; bu güvenlidir ve kazancın büyük kısmı buradan gelir. Biçimlendirmek özgün adları geri getirmez, hiçbir şey getiremez.

Gönderebileceğim en büyük dosya ne kadar?

Tek istekte 2 MB. Daha büyük dosyalar kırpılmaz, 413 ile reddedilir.