webroad.online
  1. 1Web
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Unelte
  8. 8React
  9. 9State management
  10. 10Next.js
  11. 11Formulare
  12. 12Date și backend
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Animații
  16. 16Testare
  17. 17Arhitectură
Next.js · Lecția 10 din 12

Route Handlers și Proxy

API-uri cu route.ts, Request/Response standard și proxy.ts.

Actualizat

Ce este un Route Handler

Un Route Handler e un endpoint HTTP scris în app/: un fișier route.ts care exportă funcții cu numele metodelor HTTP. Primește un Request standard și returnează un Response standard — exact API-urile Web din lecția fetch.

// app/api/posts/route.ts  →  /api/posts
export async function GET(request: Request) {
  const q = new URL(request.url).searchParams.get('q') ?? ''
  return Response.json(await searchPosts(q))
}

export async function POST(request: Request) {
  const body = await request.json()
  return Response.json(await createPost(body), { status: 201 })
}
  • Metode suportate: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
  • Nu pot exista route.ts și page.tsx în același folder.
  • Segmente dinamice merg la fel: app/api/posts/[id]/route.ts.

Când folosești Route Handlers

Situație Route Handler?
webhook de la Stripe, un CMS, GitHub da
API consumat de o aplicație mobilă / de parteneri da
RSS, sitemap custom, fișiere generate, imagini da
proxy spre un API extern (ascunzi cheia, eviți CORS) da
formular din aplicația ta nu → Server Action
datele unei pagini nu → Server Component

Ce este Proxy

Proxy (proxy.ts în rădăcina proiectului — fostul middleware) e cod care rulează înainte de fiecare request potrivit, înainte să ajungă la pagină. Poate redirecționa, rescrie URL-ul, modifica headere și cookie-uri, sau răspunde direct.

// proxy.ts
import { NextResponse, type NextRequest } from 'next/server'

export function proxy(request: NextRequest) {
  if (!request.cookies.has('session') && request.nextUrl.pathname.startsWith('/dashboard')) {
    return NextResponse.redirect(new URL(`/login?next=${request.nextUrl.pathname}`, request.url))
  }
}

export const config = { matcher: ['/dashboard/:path*'] }

Aplicația asta folosește proxy.ts ca să-ți dea cookie-ul anonim vid.

Ce pui în proxy — și ce nu

Da Nu
redirect-uri pe baza URL-ului / cookie-urilor interogări lente în DB
verificări optimiste de auth („are cookie de sesiune?”) autorizare completă — o refaci în pagină / acțiune
headere de securitate, A/B testing, i18n logică de business
setarea cookie-urilor fetch cu cache

Pe scurt

  • Route Handler = route.ts cu funcții GET/POST, Request → Response.
  • Pentru webhooks și API-uri externe; formularele tale merg prin Server Actions.
  • Proxy rulează înaintea request-ului: redirect, headere, cookie-uri — rapid și simplu.

Surse oficiale

Exerciții

Ți-a fost utilă pagina?

Un click — fără cont.