~2 دقیقه مطالعه • بروزرسانی ۱۰ آبان ۱۴۰۴
۱. خواندن هدرهای HTTP با headers()
headers() تابعی async است که در Server Components برای خواندن هدرهای ورودی HTTP استفاده میشود. خروجی آن یک آبجکت Web Headers فقطخواندنی است.
مثال:
import { headers } from 'next/headers'
export default async function Page() {
const headersList = await headers()
const userAgent = headersList.get('user-agent')
}متدهای رایج:
get(name): دریافت مقدار یک هدرhas(name): بررسی وجود هدرentries(): پیمایش کلید/مقدارها
۲. تولید تصویر داینامیک با ImageResponse
ImageResponse برای تولید تصاویر Open Graph، کارتهای توییتر و سایر تصاویر اجتماعی با استفاده از JSX و CSS استفاده میشود.
مثال ساده:
return new ImageResponse(
<div style={{ fontSize: 60 }}>Welcome</div>,
{ width: 1200, height: 630 }
)ویژگیهای پشتیبانیشده:
- Flexbox و موقعیتدهی مطلق
- فونتهای سفارشی (ttf، otf، woff)
- حداکثر حجم bundle: 500KB
مثال با فونت سفارشی:
const fontData = await readFile(join(process.cwd(), 'assets/Inter-SemiBold.ttf'))
return new ImageResponse(
<div>My site</div>,
{
width: 1200,
height: 630,
fonts: [{ name: 'Inter', data: fontData, style: 'normal', weight: 400 }],
}
)۳. نمایش صفحه خطای 404 با notFound()
notFound() تابعی است که رندر segment جاری را متوقف کرده و صفحه not-found را نمایش میدهد. همچنین متا تگ noindex را به <head> اضافه میکند.
مثال:
import { notFound } from 'next/navigation'
const user = await fetchUser(id)
if (!user) {
notFound()
}۴. ریدایرکت دائمی با permanentRedirect()
permanentRedirect() برای هدایت کاربر به مسیر جدید استفاده میشود. این تابع در Server Components، Client Components، Route Handlers و Server Actions قابل استفاده است.
مثال:
import { permanentRedirect } from 'next/navigation'
const team = await fetchTeam(id)
if (!team) {
permanentRedirect('/login')
}پارامترها:
path: مسیر مقصدtype: 'replace' یا 'push' (اختیاری)
جمعبندی
تابع headers برای خواندن اطلاعات درخواست، ImageResponse برای تولید تصاویر، notFound برای مدیریت خطا، و permanentRedirect برای هدایت کاربر ابزارهایی حیاتی در Next.js هستند. استفاده درست از این توابع باعث بهبود تجربه کاربری، امنیت و SEO میشود.
نوشته و پژوهش شده توسط دکتر شاهین صیامی