ツアーAPI
Tours APIは、ツアーを管理するための包括的な機能をユーザーに提供するように設計された堅牢なRestfulインターフェイスです。ユーザーは、利用可能なツアーの表示、Stripe Payment Gatewayを介した予約、完了後の評価ツアー、フィルター、ページネーション、ソートメカニズムの採用など、さまざまな機能にアクセスできます。 APIは、ユーザーアカウントの作成と管理、ツアーの追加と編集、レビュー管理などの追加の機能をサポートしています。特に、実装には、レイデン性と速度を最適化するためにRedisキャッシングが組み込まれています。セキュリティ対策は、強力な暗号化、圧縮技術、および速度制限によって高められます。さらに、このプロジェクトは、Nodemailer(SendGrid)を使用して電子メール通信のユーティリティ方法を統合し、CloudinaryやImageKitなどの外部ストレージソリューションへのファイルアップロードを容易にします。
- 完全なプロジェクトはレンダリングに展開され、ここからアクセスできます。
- 注:APIは現在、無料のレンダリングプランでホストされており、初めてロードするのに数秒かかる場合があります。
重要な機能 -
- 機能:ツアーの表示とブック、レート完了したツアー、ツアーのフィルターとソート、ユーザーアカウントの管理、レビューの管理。
- パフォーマンスの最適化:Redisキャッシングが採用され、レイテンシと速度が向上します。
- セキュリティ対策:強力な暗号化、圧縮、およびレート制限メカニズムが実装されています。
- サードパーティの統合:支払い処理にStripe、電子メール通信用の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ファイルを作成します。
- アプリケーションを実行します
使用法
- ツアー、ユーザー、レビュー、予約を作成、読み取り、更新、削除するのに役立ちます。
- ツアーやその他のモデルをフィルタリング、ソート、ページングする機能を提供します。
- APIを任意のFrontendアプリケーションに統合し、APIを使用して完全に機能するツアーWebサイトを作成します。
- ユーザー、ツアー、レビュー、予約を簡単に管理します。
で構築されています
- node.js -node.js®は、ChromeのV8 JavaScriptエンジンに基づいて構築されたJavaScriptランタイムです。
- Express.js- node.jsの高速で、感染していない、ミニマリストのWebフレームワーク
- Mongodb -Mongodbは、最新のアプリケーション開発者向けおよびクラウド時代向けに構築された、ドキュメントベースの分散データベースです。
- Mongoose -node.jsのエレガントなmongodbオブジェクトモデリング
- Redis -Redisは、データベース、キャッシュ、メッセージブローカーとして使用されるオープンソース(BSDライセンス)、メモリ内データ構造ストアです。
- JWT -JSON Webトークンは、2つの当事者間で安全にクレームを表すためのオープンな業界標準RFC 7519方法です。
困難が直面しました
- プロジェクトの最も難しい部分は、ファイルアップロード機能を実装することでした。ファイルをサーバーにアップロードする方法を理解するには、ImageKitのドキュメントを実行する必要がありました。また、ローカルサーバーにファイルをアップロードする方法を理解するために、MulterとSharpのドキュメントを実行する必要がありました。
- プロジェクトの2番目に難しい部分は、支払い機能を実装することでした。アプリケーションに支払い機能を実装する方法を理解するために、ストライプのドキュメントを実行する必要がありました。
- このプロジェクトの3番目に難しい部分は、フィルタリング、ソート、ページネーション機能を実装することでした。アプリケーションにフィルタリング、ソート、ページネーション機能を実装する方法を理解するために、Mongooseのドキュメントを実行する必要がありました。
将来の範囲
- APIにフロントエンドアプリケーションを追加します。
- より良いセキュリティのために、アクセスと更新トークンを実装します。
- 最大のログイン試行とロックアウトメカニズムを実装します。
- 場所ごとに検索ツアーに機能を追加します。
ライセンス
MITライセンス
謝辞
Node.js、Express.js、Mongodb、Mongooseの素晴らしいコースをありがとう、Jonas Schmedtmannに感謝します。