/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 --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}/raw | Küçültme, düz metin yanıt |
| POST | /api/v1/beautify/{lang} | Biçimlendirme, JSON yanıt |
| POST | /api/v1/beautify/{lang}/raw | Biçimlendirme, düz metin yanıt |
| GET | /api/v1/limits | Bu IP'ye kalan hak, istek harcamadan |
| GET | /api/v1/health | Canlı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 --data-urlencode 'input=body{margin:0;padding:0}' \
https://formatter.nextwell.top/api/v1/beautify/css
JSON
{input} dizesini içeren {type}.
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 --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 --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:
{
"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ı |
|---|---|---|
ok | boolean | Başarı durumunda her zaman true. |
action | string | minify ya da beautify: ne istendiyse o. |
language | string | css, js veya html. |
input_bytes | number | Gönderilenin bayt cinsinden boyutu. |
output_bytes | number | Sonucun bayt cinsinden boyutu. |
saved_bytes | number | Aradaki fark; biçimlendirmede negatif olur. |
saved_percent | number | Aynı fark, tek ondalıklı yüzde olarak. |
duration_ms | number | İşin ne kadar sürdüğü, milisaniye. |
output | string | Biç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 -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-Duration | Milisaniye cinsinden işlem süresi. |
X-RateLimit-Remaining-Second … -Month | Bu IP için her pencerede kalan hak. |
Retry-After | 429 durumunda: tükenmiş pencerelerin en darının yeniden açılmasına kalan saniye. |
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:
{
"errors": [
{ "status": 429, "title": "Too many requests", "detail": "…" }
]
}
| Durum | Başlık | Ne zaman |
|---|---|---|
| 400 | Missing input Bad request | Gövde yok ya da input alanı boş. |
| 404 | Not found | Böyle bir yol yok. |
| 405 | Method not allowed | Bir biçimlendirme uç noktası POST dışında bir yöntemle çağrıldı. |
| 413 | Payload too large | Gövde 2 MB'ı aşıyor. |
| 415 | Unsupported language | Yoldaki dil css, js veya html değil. |
| 422 | Malformed input | Biçimlendirici kaynak kodu reddetti (genellikle bir sözdizimi hatası) ya da işlem çok uzun sürdü. |
| 429 | Too many requests | İstek limiti pencerelerinden biri tükendi. Retry-After değerine bakın. |
| 500 | Internal error | Diğ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 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.