Tekoälysovelluksen rakentaminen Cursorilla on nopeampaa kuin koskaan. Kirjoitat promptin, hyväksyt ehdotetut muutokset ja SaaS MVP on pystyssä parissa tunnissa.
Tämä helppous tuo mukanaan suuren riskin. Jos jätät Next.js-tekoälysovelluksesi API-päätepisteet avoimeksi ilman rajoituksia, yksi buginen silmukka tai pahantahtoinen botti voi kuluttaa LLM-budjettisi loppuun minuuteissa.
Tehokas API-suojaus ei ole valinnainen lisäominaisuus, vaan elinehto. Tässä oppaassa rakennamme palvelinsuojat ja API kulunhallinnan Upstash Redis -tietokannan ja Cursor-tekoälyn avulla ilman monimutkaista säätämistä.
---
Arkkitehtuuri: Miten rate limiting toimii serverless-ympäristössä
Perinteiset muistiin pohjautuvat pyyntörajoitukset eivät toimi Next.js-ympäristössä, koska palvelintoiminnot (Serverless/Edge Functions) ovat lyhytikäisiä ja käynnistyvät uudelleen jatkuvasti. Tarvitsemme keskitetyn, ultrakeveän ja nopean tietovaraston pyyntöjen laskemiseen.
Upstash Redis on tähän täydellinen työkalu. Se tarjoaa HTTP-pohjaisen rajapinnan, joka toimii viiveettömästi globaaleissa Edge-ympäristöissä.
[Käyttäjän selain]
│
▼ (Pyyntö API-reittiin)
[Next.js API Route / Middleware]
│
├───► [Upstash Redis] (Tarkistetaan IP/Käyttäjä-ID ja pyyntömäärä)
│ │
│ ├───► [Raja ylittynyt] ──► Palauta HTTP 429 (Too Many Requests)
│ │
│ └───► [Sallittu]
▼
[LLM API (OpenAI / Anthropic)]
│
▼ (Vastaus takaisin käyttäjälle)
Tässä mallissa jokainen tekoälysovelluksesi API-pyyntö kulkee nopean välikäden kautta. Jos käyttäjä ylittää määritellyn limiitin, pyyntö pysäytetään ennen kuin se ehtii kalliiseen LLM-rajapintaan.
---
Vaiheittainen toteutussuunnitelma vibe-koodarille
Vibe-koodaus tarkoittaa sitä, että ohjaat tekoälyä rakentamaan sovelluksesi arkkitehtonisesti oikein ilman, että sinun tarvitsee itse kirjoittaa jokaista riviä käsin. Seuraa tätä kolmivaiheista polkua.
#### 1. Upstash Redis -ympäristön valmistelu
Luo ilmainen tili Upstashiin ja luo uusi Redis-tietokanta. Valitse alueeksi se, joka on lähimpänä Next.js-sovelluksesi palvelimia (esimerkiksi AWS eu-west-1).
Kopioi talteen seuraavat ympäristömuuttujat ja lisää ne .env.local -tiedostoosi:
-
UPSTASH_REDIS_REST_URL -
UPSTASH_REDIS_REST_TOKEN
#### 2. Cursor-tekoälyn ohjeistaminen (Prompt-malli)
Avaa Cursor-tekoäly ja käytä Composer-tilaa (Cmd+I tai Ctrl+I). Syötä alla oleva prompti, joka ohjaa Cursorin luomaan rate limiting -logiikan käyttäen virallista @upstash/ratelimit -kirjastoa.
Cursor Prompti:
"Luo Next.js-sovellukseen rate limiting -suojaus käyttäen@upstash/ratelimitja@upstash/redis-kirjastoja.
>
Tee tästä uudelleenkäytettävä apufunktio (esim. lib/rate-limit.ts), joka käyttää Sliding Window (liukuva aikaikkuna) -algoritmia. Aseta rajoitukseksi 10 pyyntöä per minuutti per IP-osoite.
>
Luo esimerkki siitä, miten tätä apufunktiota käytetään Next.js App Routerin API Route Handlerissa (esim. app/api/chat/route.ts). Jos raja ylittyy, palauta HTTP 429 -virhekoodi ja selkeä JSON-vastaus."
#### 3. API-reitin suojaaminen ja virheiden käsittely
Kun Cursor on luonut tiedostot, varmista, että API-reittisi lukee käyttäjän IP-osoitteen oikein myös silloin, kun sovellus on vietynä tuotantoon (esimerkiksi Verceliin).
Käytä x-forwarded-for -otsikkoa tunnistaaksesi käyttäjän todellisen IP-osoitteen välityspalvelimen takaa. Tämä estää sen, että yksi käyttäjä tukkii koko palvelun kaikilta muilta.
---
Oikean rajoitusstrategian valinta tekoälysovellukselle
Tekoälysovellukset vaativat erilaisen lähestymistavan pyyntörajoituksiin kuin perinteiset CRUD-sovellukset. LLM-kutsut ovat hitaita ja kalliita. Valitse strategiasi käyttötapauksen mukaan:
- Sliding Window (Liukuva aikaikkuna): Paras yleissuoja SaaS MVP -vaiheeseen. Jos raja on 20 pyyntöä tunnissa, käyttäjän limiitti palautuu tasaisesti minuuttien kuluessa, eikä tarkasti tunnin vaihtuessa.
- Token Bucket (Polettisanko): Erinomainen valinta chat-sovelluksiin. Sallii lyhyet purskeet (esimerkiksi 5 nopeaa kysymystä peräkkäin), mutta pakottaa käyttäjän hidastamaan tahtia pidemmässä keskustelussa.
- Dynaaminen hinnoitteluun perustuva rajoitus: Jos käyttäjä on kirjautunut sisään, lue hänen tilaustasonsa tietokannasta ja muuta Upstash-rajoitusta dynaamisesti (esim. ilmaiselle käyttäjälle 5 pyyntöä/min, maksavalle 60 pyyntöä/min).
---
Testaa suojauksen toimivuus ennen julkaisua
Älä luota sokeasti siihen, että koodi toimii. Testaa rate limiting helposti komentoriviltä suorittamalla useita pyyntöjä peräkkäin suojattuun API-reittiisi.
Voit käyttää tähän yksinkertaista komentorivityökalua (kuten curl silmukassa):
for i in {1..12}; do curl -X POST http://localhost:3000/api/chat; echo ""; done
Kun suoritat tämän, ensimmäisten 10 pyynnön pitäisi palauttaa normaali tekoälyvastaus (HTTP 200). Kahden viimeisen pyynnön kohdalla palvelimen pitäisi hylätä pyyntö välittömästi ja palauttaa virheilmoitus sekä HTTP 429 -statuskoodi. Upstash-konsolista näet reaaliaikaisen datan siitä, kuinka monta pyyntöä on estetty.
---
Pidä luottokorttisi turvassa
Vibe-koodaus tekee tuotantovalmiiden sovellusten rakentamisesta uskomattoman nopeaa, mutta se siirtää vastuun tietoturvasta ja kustannusten hallinnasta sinulle. Upstash Redis ja Cursor muodostavat parivaljakon, jolla rakennat ammattitasoisen API-suojauksen muutamassa minuutissa.
Ota pyyntörajoitukset käyttöön heti ensimmäisestä kehityspäivästä lähtien. Näin varmistat, että tekoälysovelluksesi pysyy pystyssä, budjettisi hallinnassa ja voit keskittyä rauhassa uuden tuotteen kehittämiseen.