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ı
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'

Yanıt

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

JSON
{
  "ok": true,
  "action": "minify",
  "language": "css",
  "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.
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-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 aynı biçimde bir JSON’dur:

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ı) ya da işlem çok uzun sürdü.
429Too many requestsİstek limiti pencerelerinden biri tükendi. Retry-After değerine bakın.
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

Ne saklanıyor

Hiçbir şey. Kodunuz sunucumuza gönderilir, isteğin süresi boyunca bellekte tutulur ve sonra atılır. Diske yazılmaz ve hiçbir günlükte görünmez. Günlüklerde yalnızca şunlar bulunur: IP’nin kısaltılmış özeti, dil, eylem, bayt sayısı 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?

Yalnızca kendi sunucumuza. Tüm işlem orada, bellekte yapılır; kod ne saklanır ne de günlüğe yazılır.

Derleme betiğinde kullanabilir miyim?

Evet, raw uç noktaları tam da bunun için var. Limitlerin içinde kalın.

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

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.