เทมเพลต NestJS MongoDB Blog API – REST Backend ที่มีฟังก์ชันครบครันสำหรับบล็อก

การสร้างแบ็กเอนด์บล็อกที่ปรับขนาดได้นั้นต้องอาศัยสถาปัตยกรรมที่มีโครงสร้างที่ดี ระบบการตรวจสอบสิทธิ์ และ API ที่มีการจัดทำเอกสารอย่างเหมาะสมNestJS MongoDB Blog APIคือเทมเพลตแบ็กเอนด์ที่พร้อมใช้งานจริง ซึ่งออกแบบมาเพื่อช่วยให้นักพัฒนาสามารถสร้างแพลตฟอร์มบล็อกที่ทันสมัยได้อย่างรวดเร็วโดยใช้NestJS, MongoDB JWT authenticationและเอกสาร Swagger

โครงการนี้มี API แบบ RESTful ที่สมบูรณ์แบบ ซึ่งรวมถึงโมดูลสำหรับ ผู้ ใช้โพสต์ หมวดหมู่ แท็ก ความคิดเห็น การตรวจสอบสิทธิ์ และการควบคุมการเข้าถึงตามบทบาท

ที่เก็บโค้ด: https://github.com/bfotool/nestjs-mongodb-blog-base

NestJS MongoDB Blog API คืออะไร

NestJS MongoDB Blog APIเป็นเทมเพลตแบ็กเอนด์โอเพนซอร์สที่สร้างด้วยNestJS 11 และ MongoDBซึ่งมี REST API สำหรับบล็อกที่ใช้งานได้อย่างเต็มรูปแบบ

ได้รับการออกแบบมาเพื่อใช้เป็นรากฐานสำหรับการก่อสร้าง:

  • แพลตฟอร์มบล็อก

  • ระบบ CMS แบบไร้ส่วนหัว

  • API สำหรับการเผยแพร่เนื้อหา

  • เว็บไซต์เอกสารประกอบ

  • บล็อกผลงานของนักพัฒนา

โครงการนี้ใช้สถาปัตยกรรมแบบโมดูลาร์ตามที่ NestJS แนะนำซึ่งช่วยให้มั่นใจได้ถึงความสามารถในการขยายขนาดและการบำรุงรักษา

ที่เก็บโค้ด: https://github.com/bfotool/nestjs-mongodb-blog-base

คุณสมบัติหลัก

การตรวจสอบสิทธิ์และการอนุญาต

API นี้มีระบบตรวจสอบสิทธิ์ที่ปลอดภัยโดยใช้โทเค็น JWT

คุณสมบัติหลักในการตรวจสอบสิทธิ์ประกอบด้วย:

  • โทเค็นการเข้าถึงและรีเฟรช JWT

  • การควบคุมการเข้าถึงตามบทบาท(RBAC)

  • การเข้ารหัสรหัสผ่านด้วย bcrypt

  • เส้นทาง API ที่ได้รับการปกป้องโดยใช้ Guards

  • กลไกการรีเฟรชโทเค็น

ระบบรองรับบทบาทผู้ใช้เริ่มต้นสามบทบาท:

  • ผู้ดูแลระบบ

  • ผู้เขียน

  • ผู้อ่าน

วิธีนี้ช่วยให้จัดการสิทธิ์การเข้าถึงระหว่าง API endpoint ต่างๆ ได้ง่ายขึ้น

โมดูลบล็อกแบบเต็มรูปแบบ

โครงการนี้ประกอบด้วยโมดูลที่พัฒนาเสร็จสมบูรณ์หลายโมดูล ซึ่งครอบคลุมฟังก์ชันการทำงานหลักทั้งหมดของบล็อก

โมดูลการตรวจสอบสิทธิ์

จัดการการตรวจสอบสิทธิ์และเซสชันของผู้ใช้

จุดสิ้นสุดประกอบด้วย:

  • POST /auth/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /auth/profile

โมดูลผู้ใช้

จัดการบัญชีผู้ใช้และโปรไฟล์ผู้ใช้

จุดสิ้นสุด:

  • GET /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /users/:id

การดำเนินการเขียนข้อมูลต้องใช้สิทธิ์ผู้ดูแลระบบ

โมดูลโพสต์

โมดูลโพสต์ทำหน้าที่จัดการเนื้อหาบล็อก

คุณสมบัติเด่นได้แก่:

  • การแบ่งหน้า

  • การกรองตามหมวดหมู่ แท็ก หรือผู้เขียน

  • การเรียงลำดับ

  • การค้นหาข้อความเต็ม

  • บทความเด่น

จุดสิ้นสุด:

  • GET /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /posts/:id

โมดูลหมวดหมู่

จัดเรียงบทความในบล็อกเป็นหมวดหมู่

จุดสิ้นสุด:

  • GET /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /categories/:id

โมดูลแท็ก

ช่วยให้สามารถติดแท็กบทความในบล็อกได้อย่างยืดหยุ่น

จุดสิ้นสุด:

  • GET /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /tags/:id

โมดูลแสดงความคิดเห็น

รองรับการแสดงความคิดเห็นแบบเป็นหัวข้อ และการตอบกลับแบบซ้อนกัน

จุดสิ้นสุด:

  • GET /comments/post/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /comments/:id

ความสามารถของ API

การแบ่งหน้า

เอนด์พอยต์รายการทั้งหมดรองรับการแบ่งหน้า

ตัวอย่าง:

GET /posts?page=1&limit=6

การกรอง

สามารถกรองโพสต์ตามหมวดหมู่ แท็ก หรือผู้เขียนได้

ตัวอย่าง:

GET /posts?category=web-development

การค้นหาข้อความเต็ม

มีการเพิ่มฟังก์ชันการค้นหาลงในโพสต์แล้ว

ตัวอย่าง:

GET /posts?search=nestjs+mongodb

การเรียงลำดับ

สามารถจัดเรียงผลลัพธ์จาก API ตามฟิลด์ต่างๆ ได้

ตัวอย่าง:

GET /posts?sortBy=createdAt&sortOrder=desc

การสร้างสลักอัตโนมัติ

เมื่อสร้างโพสต์ ระบบจะสร้าง slug ที่เป็นมิตรกับ URL โดยอัตโนมัติจากชื่อเรื่องโดยใช้slugify

ตัวอย่าง:

Building REST APIs with NestJS 
→ building-rest-apis-with-nestjs 

การคำนวณเวลาอ่าน

API จะคำนวณเวลาอ่านโดยประมาณโดยอัตโนมัติ โดยอิงจากความยาวของเนื้อหาในแต่ละโพสต์

รูปแบบการตอบกลับ API ที่สม่ำเสมอ

คำตอบทั้งหมดเป็นไปตามโครงสร้างมาตรฐาน:

{ 
  "success": true, 
  "data": {}, 
  "timestamp": "2026-01-01T10:00:00Z" 
} 

ซึ่งจะช่วยปรับปรุงการทำงานร่วมกันและการแก้ไขข้อผิดพลาดในส่วนหน้าให้ดียิ่งขึ้น

เทคโนโลยีสแต็ก

ส่วนแบ็กเอนด์สร้างขึ้นโดยใช้เทคโนโลยี Node.js ที่ทันสมัย

ชั้น เทคโนโลยี
กรอบ NestJS 11
ภาษา ไทป์สคริปต์ 5.7
ฐานข้อมูล MongoDB 8
ODM มังกูส 8
การตรวจสอบสิทธิ์ Passport.js + JWT
การตรวจสอบความถูกต้อง ตัวตรวจสอบคลาส
เอกสารประกอบ API สแวกเกอร์ โอเพ่นเอพีไอ
ความปลอดภัยของรหัสผ่าน การเข้ารหัสลับ
เครื่องกำเนิดสลัก สลักฟาย
การทดสอบ ล้อเล่น

โครงสร้างโครงการ

โครงการนี้ใช้สถาปัตยกรรมแบบโมดูลาร์

src/ 
├── auth/ 
├── users/ 
├── posts/ 
├── categories/ 
├── tags/ 
├── comments/ 
├── common/ 
└── seed/ 

ส่วนประกอบที่สำคัญได้แก่:

  • การตรวจสอบ DTO

  • แผนผังมังงูส

  • ตัวกรองข้อยกเว้นทั่วโลก

  • ตัวสกัดการตอบสนอง

  • ยาม JWT

  • นักตกแต่งบทบาท

โครงสร้างนี้ช่วยให้โค้ดเบสมีความเป็นระเบียบและสามารถขยายขนาดได้

วิธีการติดตั้งและเรียกใช้โปรเจ็กต์

ข้อกำหนดเบื้องต้น

ก่อนทำการติดตั้ง โปรดตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:

  • Node.js 18.17+

  • MongoDB 6+

  • npm, yarn หรือ pnpm

โคลนที่เก็บข้อมูล

git clone https://github.com/bfotool/nestjs-mongodb-blog-base 
cd nestjs-mongodb-blog-base 

ติดตั้งส่วนประกอบที่จำเป็น

npm install

กำหนดค่าตัวแปรสภาพแวดล้อม

คัดลอกไฟล์สภาพแวดล้อมตัวอย่าง:

cp .env.example .env

อัปเดตค่าต่อไปนี้:

MONGODB_URI= 
JWT_ACCESS_SECRET= 
JWT_REFRESH_SECRET= 

ใส่ข้อมูลเริ่มต้นลงในฐานข้อมูล

กรอกข้อมูลตัวอย่างลงในฐานข้อมูล:

npm run seed

เพื่อรีเซ็ตและเริ่มต้นใหม่:

npm run seed:refresh

เริ่มเซิร์ฟเวอร์สำหรับการพัฒนา

npm run start:dev

URL พื้นฐานของ API:

http://localhost:3000/api/v1

เอกสารประกอบการใช้งาน Swagger:

http://localhost:3000/api/docs

ข้อมูลเริ่มต้นที่กำหนดไว้ล่วงหน้า

สคริปต์เริ่มต้นจะสร้างข้อมูลตัวอย่างสำหรับการทดสอบ

เอนทิตี นับ
ผู้ใช้ 5
หมวดหมู่ 5
แท็ก 28
โพสต์ 10
ความคิดเห็น 6

ข้อมูลประจำตัวการเข้าสู่ระบบเริ่มต้น

รหัสผ่านสำหรับผู้ใช้ทั้งหมดที่เข้าร่วมโครงการ:

admin123

บัญชี:

บทบาท อีเมล
ผู้ดูแลระบบ [email protected]
ผู้เขียน [email protected]
ผู้เขียน [email protected]
ผู้เขียน [email protected]
ผู้อ่าน [email protected]

เอกสารประกอบ API ของ Swagger

เอกสารประกอบการใช้งาน API แบบโต้ตอบสามารถดูได้ที่:

http://localhost:3000/api/docs

Swagger มีคุณสมบัติดังต่อไปนี้:

  • การทดสอบปลายทางแบบโต้ตอบ

  • JWT authenticationสนับสนุน

  • เอกสารประกอบโครงสร้างคำขอและการตอบกลับ

เหตุใดจึงควรใช้ที่เก็บข้อมูลนี้

NestJS MongoDB Blog APIเป็นจุดเริ่มต้นที่มีประสิทธิภาพสำหรับนักพัฒนาในการสร้างระบบแบ็กเอนด์บล็อกที่ทันสมัย

ข้อดีได้แก่:

  • สถาปัตยกรรมแบบโมดูลาร์ที่สะอาดตา ของ NestJS

  • ระบบ ตรวจสอบสิทธิ์และการควบคุมการเข้าถึงตามบทบาท(RBAC)ในตัว

  • เอกสารประกอบการใช้งาน Swagger APIที่พร้อมใช้งาน

  • การผสานรวม MongoDB โดยใช้Mongoose

  • ระบบการสร้างฐานข้อมูลเริ่มต้น

  • โครงสร้างโครงการที่พร้อมสำหรับการผลิต

ที่เก็บโค้ด: https://github.com/bfotool/nestjs-mongodb-blog-base