عرض المستندات
// pages/api/user.ts
class User {
// GET /api/user
@ Get ( )
async fetchUser ( @ Query ( 'id' ) id : string ) {
const user = await DB . findUserById ( id ) ;
if ( ! user ) {
throw new NotFoundException ( 'User not found.' ) ;
}
return user ;
}
// POST /api/user
@ Post ( )
@ HttpCode ( 201 )
async createUser ( @ Body ( ValidationPipe ) body : CreateUserDto ) {
return await DB . createUser ( body . email ) ;
}
}
export default createHandler ( User ) ;اقرأ المزيد عن التحقق من الصحة هنا
export default async ( req : NextApiRequest , res : NextApiResponse ) => {
if ( req . method === 'GET' ) {
const user = await DB . findUserById ( req . query . id ) ;
if ( ! user ) {
return res . status ( 404 ) . json ( {
statusCode : 404 ,
message : 'User not found'
} )
}
return res . json ( user ) ;
} else if ( req . method === 'POST' ) {
// Very primitive e-mail address validation.
if ( ! req . body . email || ( req . body . email && ! req . body . email . includes ( '@' ) ) ) {
return res . status ( 400 ) . json ( {
statusCode : 400 ,
message : 'Invalid e-mail address.'
} )
}
const user = await DB . createUser ( req . body . email ) ;
return res . status ( 201 ) . json ( user ) ;
}
res . status ( 404 ) . json ( {
statusCode : 404 ,
message : 'Not Found'
} ) ;
} إن بناء وظائف بدون خادم معنية مع الفئات والديكور يجعل التعامل مع طرق API Next.js أسهل وتجلب الطلب والعقلانية إلى قاعدة كود /pages/api .
الهيكل مستوحى بشدة من NestJS ، وهو إطار رائع لكثير من حالات الاستخدام. من ناحية أخرى ، يمكن لـ Nestjs Repo المنفصل للواجهة الخلفية أيضًا أن يجلب النفقات العامة غير الضرورية والتعقيد للمشاريع ذات مجموعة أصغر من متطلبات الواجهة الخلفية. الجمع بين بنية NESTJS ، مع سهولة استخدام NEXT.JS ، يجلب أفضل ما في العالمين لحالة الاستخدام الصحيحة.
إذا لم تكن معتادًا على Next.js أو NestJS وتريد المزيد من المعلومات (أو تحتاج إلى أن تكون مقتنعًا) ، تحقق من مقالة Awesome.js API على مسارات API مع Decorators التالية بواسطة tpjnorton
تفضل بزيارة https://next-api-decorators.vercel.app/docs/#installation للبدء.
الرجوع إلى مستنداتنا لمواضيع الاستخدام:
تصديق
مطابقة الطريق
باستخدام الوسيطة
الأوساط المخصصة
الأنابيب
استثناءات
| وصف | |
|---|---|
@SetHeader(name: string, value: string) | يعين اسم/قيمة رأس في جميع الطرق المحددة في الفصل. |
@UseMiddleware(...middlewares: Middleware[]) | يسجل واحد أو عدة أدوات متوسطة لجميع الطرق المحددة في الفصل. |
| وصف | |
|---|---|
@Get(path?: string) | يمثل الطريقة كما GET معالج. |
@Post(path?: string) | يمثل الطريقة كمعالج POST . |
@Put(path?: string) | يمثل الطريقة كما PUT معالج. |
@Delete(path?: string) | يمثل الطريقة كمعالج DELETE . |
@Patch(path?: string) | يمثل طريقة معالج PATCH . |
@SetHeader(name: string, value: string) | يعين اسم/قيمة رأس في استجابة المسار. |
@HttpCode(code: number) | يعين رمز HTTP في استجابة الطريق. |
@UseMiddleware(...middlewares: Middleware[]) | يسجل واحدة أو متعددة الأدوات الوسطى للمعالج. |
| وصف | |
|---|---|
@Req() | الحصول على كائن الطلب. |
@Res() * | يحصل على كائن الاستجابة. |
@Body() | يحصل على جسم الطلب. |
@Query(key: string) | يحصل على قيمة معلمة سلسلة الاستعلام بواسطة المفتاح. |
@Header(name: string) | يحصل على قيمة رأس حسب الاسم. |
@Param(key: string) | يحصل على قيمة معلمة الطريق حسب المفتاح. |
* لاحظ أنه عند حقن @Res() في معالج الطريقة ، تصبح مسؤولاً عن إدارة الاستجابة. عند القيام بذلك ، يجب عليك إصدار نوع من الاستجابة عن طريق إجراء مكالمة على كائن الاستجابة (على سبيل المثال ، res.json(...) أو res.send(...) ) ، أو سيتم تعليق خادم HTTP.