Tur API
Tur API adalah antarmuka yang kuat yang dirancang untuk memberikan fungsionalitas komprehensif kepada pengguna untuk mengelola tur. Pengguna dapat mengakses berbagai fitur termasuk melihat tur yang tersedia, memesannya melalui gateway pembayaran stripe, wisata peringkat pasca penyelesaian, dan menggunakan filter, pagination, dan mekanisme penyortiran. API mendukung kemampuan tambahan seperti pembuatan dan manajemen akun pengguna, penambahan dan pengeditan tur, dan administrasi peninjauan. Khususnya, implementasi menggabungkan caching redis untuk mengoptimalkan latensi dan kecepatan. Langkah -langkah keamanan meningkat melalui enkripsi yang kuat, teknik kompresi, dan pembatasan laju. Selain itu, proyek mengintegrasikan metode utilitas untuk komunikasi email menggunakan Nodemailer (SendGrid) dan memfasilitasi unggahan file ke solusi penyimpanan eksternal seperti Cloudinary atau ImageKit.
- Proyek lengkap digunakan pada render dan dapat diakses di sini.
- Catatan: API saat ini di -host pada rencana render gratis dan dapat memakan waktu beberapa detik untuk memuat untuk pertama kalinya.
Fitur Utama -
- Fungsionalitas : Lihat dan Buku Tur, Tarif Tur Selesai, Menyaring dan Mengurutkan Tur, Mengelola Akun Pengguna, dan Mengelola Ulasan.
- Optimalisasi Kinerja : Caching Redis digunakan untuk meningkatkan latensi dan kecepatan.
- Langkah -langkah keamanan : Enkripsi yang kuat, kompresi, dan mekanisme pembatas laju diimplementasikan.
- Integrasi Pihak Ketiga : Memanfaatkan Stripe untuk Pemrosesan Pembayaran, Nodemailer (SendinBlue) untuk komunikasi email, dan cloudinary/ImageKit untuk penyimpanan file eksternal.
- Fitur komprehensif : Mendukung pagination, penyortiran, dan penyaringan operasi terkait tur.
Daftar isi
- Prasyarat
- Instalasi
- Penggunaan
- Dokumentasi API
- Dibangun dengan
- Kesulitan yang dihadapi
- Ruang lingkup masa depan
- Lisensi
Prasyarat
- Sistem Anda harus menginstal Node.js. Jika tidak, Anda dapat menginstalnya dari sini.
- Anda harus memiliki akun MongoDB Atlas. Jika tidak, Anda dapat membuatnya dari sini.
- Anda harus memiliki akun strip. Jika tidak, Anda dapat membuatnya dari sini.
- Anda harus memiliki akun SendinBlue. Jika tidak, Anda dapat membuatnya dari sini.
- Anda harus memiliki akun ImageKit. Jika tidak, Anda dapat membuatnya dari sini.
- Untuk pengujian, Anda dapat menggunakan Postman atau Insomnia atau Thunderclient Extension yang tersedia di VScode.
- Untuk caching, Anda harus memiliki akun Redis. Dalam proyek ini, saya sudah menggunakan Redis dari render.com. Jika tidak, Anda dapat membuatnya dari sini.
Instalasi
- Klon Repositori
git clone https://github.com/varshil-shah/tours-api.git
- Instal Paket NPM
npm install or yarn install
- Buat file .env di direktori root, sama seperti file .env.example, dan tambahkan variabel lingkungan
- Jalankan aplikasi
Penggunaan
- Membantu Anda membuat, membaca, memperbarui dan menghapus tur, pengguna, ulasan, dan pemesanan.
- Memberi Anda kemampuan untuk menyaring, mengurutkan, dan paginat tur dan model lainnya juga.
- Integrasi API ke aplikasi Frontend apa pun dan gunakan API kami untuk membuat situs web Tours yang berfungsi penuh.
- Kelola pengguna, tur, ulasan, dan pemesanan Anda dengan mudah.
Dibangun dengan
- Node.js - Node.js® adalah runtime JavaScript yang dibangun di atas mesin JavaScript V8 Chrome.
- Express.js - Kerangka kerja web minimalis yang cepat, tidak teropiniasi, untuk node.js.
- MONGODB - MongoDB adalah basis data tujuan umum, berbasis dokumen, didistribusikan yang dibangun untuk pengembang aplikasi modern dan untuk era cloud.
- Mongoose - Pemodelan objek MongoDB yang elegan untuk Node.js.
- Redis - Redis adalah open source (BSD berlisensi), toko struktur data dalam memori, digunakan sebagai basis data, cache, dan broker pesan.
- JWT - JSON Web Token adalah metode terbuka, standar industri RFC 7519 untuk mewakili klaim dengan aman antara dua pihak.
Kesulitan yang dihadapi
- Bagian paling sulit dari proyek ini adalah mengimplementasikan fitur Unggah File. Saya harus melalui dokumentasi ImageKit untuk memahami cara mengunggah file ke server mereka. Saya juga harus melalui dokumentasi Multer dan Sharp untuk memahami cara mengunggah file ke server lokal.
- Bagian kedua yang paling sulit dari proyek ini adalah mengimplementasikan fitur pembayaran. Saya harus melalui dokumentasi Stripe untuk memahami cara mengimplementasikan fitur pembayaran dalam aplikasi.
- Bagian ketiga yang paling sulit dari proyek ini adalah mengimplementasikan fitur penyaringan, penyortiran, dan pagination. Saya harus melalui dokumentasi Mongoose untuk memahami cara menerapkan fitur penyaringan, penyortiran, dan pagination dalam aplikasi.
Ruang lingkup masa depan
- Tambahkan aplikasi Frontend ke API.
- Menerapkan akses dan menyegarkan token untuk keamanan yang lebih baik.
- Menerapkan upaya login maksimum dan mekanisme penguncian.
- Tambahkan fitur untuk mencari tur berdasarkan lokasi.
Lisensi
Lisensi MIT
Ucapan Terima Kasih
Terima kasih kepada Jonas Schmedtmann untuk kursusnya yang luar biasa di Node.js, Express.js, Mongodb dan Mongoose.