Tours API
Tours API是一個強大的恢復界面,旨在為用戶提供用於管理旅行的全面功能。用戶可以訪問各種功能,包括查看可用的旅行,通過Stripe Payment Gateway進行預訂,完成後評級旅行以及使用過濾器,分頁和分類機制。 API支持其他功能,例如用戶帳戶創建和管理,添加和編輯以及審查管理。值得注意的是,該實施將重新緩存結合起來,以優化延遲和速度。通過強大的加密,壓縮技術和限制速率,可以加強安全措施。此外,該項目還將使用NodeMailer(SendGrid)的電子郵件通信集成了實用程序方法,並促進了文件上傳到Cloudinary或imageKit(例如Cloudinary或ImageKit)的外部存儲解決方案。
- 完整的項目已在渲染上部署,可以在此處訪問。
- 注意:當前,API託管在免費渲染計劃中,可能需要幾秒鐘才能加載。
關鍵功能 -
- 功能:查看和書籍旅行,匯率完成的旅行,過濾和排序旅行,管理用戶帳戶以及管理評論。
- 性能優化:使用REDIS緩存來增強潛伏期和速度。
- 安全措施:實施強大的加密,壓縮和限制機制。
- 第三方集成:利用條紋進行付款處理,NodeMailer(SendInblue)進行電子郵件通信,以及用於外部文件存儲的Cloudinary/ImageKit。
- 全面的功能:支持分頁,分類和過濾與旅遊相關的操作。
目錄
- 先決條件
- 安裝
- 用法
- API文檔
- 建立
- 面臨困難
- 未來範圍
- 執照
先決條件
- 您的系統應安裝node.js。如果沒有,您可以從這里安裝它。
- 您應該有一個MongoDB Atlas帳戶。如果沒有,您可以從這裡創建一個。
- 您應該有一個條紋帳戶。如果沒有,您可以從這裡創建一個。
- 您應該有一個sendinblue帳戶。如果沒有,您可以從這裡創建一個。
- 您應該有一個ImageKit帳戶。如果沒有,您可以從這裡創建一個。
- 對於測試,您可以使用VSCODE上可用的郵遞員,失眠或雷電擴展。
- 對於緩存,您應該有一個redis帳戶。在這個項目中,我使用了render.com的redis。如果沒有,您可以從這裡創建一個。
安裝
- 克隆存儲庫
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®是基於Chrome的V8 JavaScript引擎的JavaScript運行時。
- express.js-快速,未開放的,簡約的網絡框架。
- MongoDB -MongoDB是一種通用,基於文檔的,分佈式數據庫,為現代應用程序開發人員和雲時代構建。
- Mongoose- node.js的優雅mongodb對象建模
- REDIS -REDIS是開源(BSD許可),內存數據結構存儲,用作數據庫,緩存和消息代理。
- JWT -JSON Web令牌是一種開放的行業標準RFC 7519方法,用於在兩方之間安全地表示索賠。
面臨困難
- 該項目最困難的部分是實現文件上傳功能。我必須仔細閱讀ImageKit的文檔,以了解如何將文件上傳到其服務器。我還必須仔細閱讀Multer和Sharp的文檔,以了解如何將文件上傳到本地服務器。
- 該項目的第二個最困難的部分是實施付款功能。我必須仔細閱讀Stripe的文檔,以了解如何在應用程序中實現付款功能。
- 該項目最困難的部分是實施過濾,分類和分頁功能。我必須仔細閱讀貓鼬的文檔,以了解如何在應用程序中實現過濾,分類和分頁功能。
未來範圍
- 向API添加前端應用程序。
- 實現訪問和刷新令牌,以提高安全性。
- 實施最大登錄嘗試和鎖定機制。
- 按位置添加功能為搜索旅行。
執照
麻省理工學院許可證
致謝
感謝Jonas Schmedtmann在Node.js,Express.js,Mongodb和Mongoose上的出色課程。