การสร้างแบ็กเอนด์บล็อกที่ปรับขนาดได้นั้นต้องอาศัยสถาปัตยกรรมที่มีโครงสร้างที่ดี ระบบการตรวจสอบสิทธิ์ และ 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/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
โมดูลผู้ใช้
จัดการบัญชีผู้ใช้และโปรไฟล์ผู้ใช้
จุดสิ้นสุด:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
การดำเนินการเขียนข้อมูลต้องใช้สิทธิ์ผู้ดูแลระบบ
โมดูลโพสต์
โมดูลโพสต์ทำหน้าที่จัดการเนื้อหาบล็อก
คุณสมบัติเด่นได้แก่:
การแบ่งหน้า
การกรองตามหมวดหมู่ แท็ก หรือผู้เขียน
การเรียงลำดับ
การค้นหาข้อความเต็ม
บทความเด่น
จุดสิ้นสุด:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
โมดูลหมวดหมู่
จัดเรียงบทความในบล็อกเป็นหมวดหมู่
จุดสิ้นสุด:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
โมดูลแท็ก
ช่วยให้สามารถติดแท็กบทความในบล็อกได้อย่างยืดหยุ่น
จุดสิ้นสุด:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
โมดูลแสดงความคิดเห็น
รองรับการแสดงความคิดเห็นแบบเป็นหัวข้อ และการตอบกลับแบบซ้อนกัน
จุดสิ้นสุด:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /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



