ทัวร์ API
Tours API เป็นอินเทอร์เฟซพักผ่อนที่แข็งแกร่งซึ่งออกแบบมาเพื่อให้ผู้ใช้มีฟังก์ชั่นที่ครอบคลุมสำหรับการจัดการทัวร์ ผู้ใช้สามารถเข้าถึงคุณสมบัติที่หลากหลายรวมถึงการดูทัวร์ที่มีอยู่จองผ่านเกตเวย์การชำระเงินแถบการจัดอันดับทัวร์โพสต์เสร็จสิ้นและใช้ตัวกรองการปนเปื้อนและกลไกการเรียงลำดับ API รองรับความสามารถเพิ่มเติมเช่นการสร้างบัญชีผู้ใช้และการจัดการการเพิ่มทัวร์และการแก้ไขและการตรวจสอบการบริหาร โดยเฉพาะอย่างยิ่งการดำเนินการรวม Redis แคชเพื่อเพิ่มประสิทธิภาพเวลาแฝงและความเร็ว มาตรการรักษาความปลอดภัยจะเพิ่มขึ้นผ่านการเข้ารหัสที่แข็งแกร่งเทคนิคการบีบอัดและการ จำกัด อัตรา นอกจากนี้โครงการยังรวมวิธีการยูทิลิตี้สำหรับการสื่อสารทางอีเมลโดยใช้ NodeMailer (SendGrid) และอำนวยความสะดวกในการอัปโหลดไฟล์ไปยังโซลูชันการจัดเก็บข้อมูลภายนอกเช่น Cloudinary หรือ ImageKit
- โครงการที่สมบูรณ์ถูกนำไปใช้ในการแสดงผลและสามารถเข้าถึงได้ที่นี่
- หมายเหตุ: API ปัจจุบันโฮสต์ในแผนเรนเดอร์ฟรีและอาจใช้เวลาสองสามวินาทีในการโหลดเป็นครั้งแรก
คุณสมบัติที่สำคัญ -
- ฟังก์ชั่น : ดูและหนังสือทัวร์, อัตราทัวร์ที่เสร็จสมบูรณ์, กรองและเรียงทัวร์, จัดการบัญชีผู้ใช้และการตรวจสอบความคิดเห็น
- การเพิ่มประสิทธิภาพประสิทธิภาพ : การแคช Redis ใช้เพื่อเพิ่มความหน่วงแฝงและความเร็ว
- มาตรการรักษาความปลอดภัย : กลไกการเข้ารหัสการบีบอัดและการ จำกัด อัตราที่แข็งแกร่งจะถูกนำมาใช้
- การรวมบุคคลที่สาม : ใช้ Stripe สำหรับการประมวลผลการชำระเงิน, NodeMailer (SendInBlue) สำหรับการสื่อสารทางอีเมลและ Cloudinary/ImageKit สำหรับการจัดเก็บไฟล์ภายนอก
- คุณสมบัติที่ครอบคลุม : รองรับการปนเปื้อนการเรียงลำดับและการกรองการดำเนินงานที่เกี่ยวข้องกับการท่องเที่ยว
สารบัญ
- ข้อกำหนดเบื้องต้น
- การติดตั้ง
- การใช้งาน
- เอกสาร API
- สร้างขึ้นด้วย
- ความยากลำบากต้องเผชิญ
- ขอบเขตในอนาคต
- ใบอนุญาต
ข้อกำหนดเบื้องต้น
- ระบบของคุณควรติดตั้ง node.js ถ้าไม่คุณสามารถติดตั้งได้จากที่นี่
- คุณควรมีบัญชี MongoDB Atlas ถ้าไม่คุณสามารถสร้างได้จากที่นี่
- คุณควรมีบัญชี Stripe ถ้าไม่คุณสามารถสร้างได้จากที่นี่
- คุณควรมีบัญชี SendinBlue ถ้าไม่คุณสามารถสร้างได้จากที่นี่
- คุณควรมีบัญชี ImageKit ถ้าไม่คุณสามารถสร้างได้จากที่นี่
- สำหรับการทดสอบคุณสามารถใช้ Postman หรือ Insomnia หรือ ThunderClient Extension ที่มีอยู่ใน VSCODE
- สำหรับการแคชคุณควรมีบัญชี Redis ในโครงการนี้ฉันใช้ Redis จาก render.com ถ้าไม่คุณสามารถสร้างได้จากที่นี่
การติดตั้ง
- โคลนที่เก็บ
git clone https://github.com/varshil-shah/tours-api.git
- ติดตั้งแพ็คเกจ NPM
npm install or yarn install
- สร้างไฟล์. env ในไดเรกทอรีรูทเหมือนกับไฟล์. env.example และเพิ่มตัวแปรสภาพแวดล้อม
- เรียกใช้แอปพลิเคชัน
การใช้งาน
- ช่วยให้คุณสร้างอ่านอัปเดตและลบทัวร์ผู้ใช้บทวิจารณ์และการจอง
- ให้ความสามารถในการกรองจัดเรียงและจัดทัวร์และโมเดลอื่น ๆ ด้วย
- รวม API เข้ากับแอปพลิเคชันส่วนหน้าและใช้ API ของเราเพื่อสร้างเว็บไซต์ทัวร์ที่ใช้งานได้อย่างสมบูรณ์
- จัดการผู้ใช้ทัวร์บทวิจารณ์และการจองได้อย่างง่ายดาย
สร้างขึ้นด้วย
- node.js - node.js®เป็นรันไทม์ JavaScript ที่สร้างขึ้นบนเครื่องยนต์ V8 JavaScript ของ Chrome
- Express.js - เฟรมเวิร์กเว็บที่รวดเร็วไม่ได้รับการผ่าตัดมินิมัลลิสต์สำหรับ Node.js.
- MongoDB - MongoDB เป็นวัตถุประสงค์ทั่วไปฐานข้อมูลแบบกระจายเอกสารที่สร้างขึ้นสำหรับนักพัฒนาแอปพลิเคชันที่ทันสมัยและสำหรับยุคคลาวด์
- Mongoose - การสร้างแบบจำลองวัตถุ MongoDB ที่สง่างามสำหรับ Node.js.
- Redis - Redis เป็นโอเพ่นซอร์ส (BSD Licensed), ร้านค้าโครงสร้างข้อมูลในหน่วยความจำซึ่งใช้เป็นฐานข้อมูลแคชและนายหน้านายหน้า
- JWT - JSON Web Tokens เป็นวิธีการเปิดมาตรฐานอุตสาหกรรม RFC 7519 สำหรับการเรียกร้องการเรียกร้องอย่างปลอดภัยระหว่างสองฝ่าย
ความยากลำบากต้องเผชิญ
- ส่วนที่ยากที่สุดของโครงการคือการใช้คุณสมบัติการอัปโหลดไฟล์ ฉันต้องผ่านเอกสารของ ImageKit เพื่อทำความเข้าใจวิธีการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ของพวกเขา ฉันยังต้องผ่านเอกสารประกอบของ Multer และ Sharp เพื่อทำความเข้าใจวิธีการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ท้องถิ่น
- ส่วนที่ยากที่สุดอันดับสองของโครงการคือการใช้คุณสมบัติการชำระเงิน ฉันต้องผ่านเอกสารของ Stripe เพื่อทำความเข้าใจวิธีการใช้คุณสมบัติการชำระเงินในแอปพลิเคชัน
- ส่วนที่ยากที่สุดประการที่สามของโครงการคือการใช้คุณสมบัติการกรองการเรียงลำดับและการปนเปื้อน ฉันต้องผ่านเอกสารประกอบของพังพอนเพื่อทำความเข้าใจวิธีการใช้คุณสมบัติการกรองการเรียงลำดับและการแบ่งหน้าในแอปพลิเคชัน
ขอบเขตในอนาคต
- เพิ่มแอปพลิเคชันส่วนหน้าไปยัง API
- ใช้โทเค็นการเข้าถึงและรีเฟรชเพื่อความปลอดภัยที่ดีขึ้น
- ใช้ความพยายามในการเข้าสู่ระบบสูงสุดและกลไกการล็อก
- เพิ่มคุณสมบัติในการค้นหาทัวร์ตามสถานที่
ใบอนุญาต
ใบอนุญาต MIT
กิตติกรรมประกาศ
ขอบคุณ Jonas Schmedtmann สำหรับหลักสูตรที่น่าทึ่งของเขาใน Node.js, Express.js, MongoDB และ Mongoose