検索
ホームページウェブフロントエンドjsチュートリアルNode.js スターター プロジェクトのデンガン GraphQL、Redis、JWT、および Sequelize

Node.js Starter Project dengan GraphQL, Redis, JWT, dan Sequelize

このテンプレートは、API 用の GraphQL、キャッシュおよび一時用の Redis で事前構成された Node.js スターター プロジェクト を提供します。データ ストレージ、認証と認可のための JWT、およびPostgreSQL や MySQL などのリレーショナル データベースに接続された ORM の Sequelize。このプロジェクトはモジュール構造になっており、統合されたスケーラブルな機能を備えた最新の Web アプリケーションを即座に開発できます。

?プロジェクト概要

このプロジェクトは、データ キャッシュに Redis を使用し、API を保護するために JWT を使用する GraphQL API を使用したバックエンド アプリケーションの開発を容易にするように設計されています。 Sequelize は、リレーショナル データベースとの対話を容易にする ORM として使用されます。さらに、認証、検証、ロギングの処理を容易にするミドルウェアがあります。

主な特長

  • GraphQL API により柔軟かつ効率的なクエリとデータ変更
  • JWT 認証: 安全なトークンベースの認証
  • データのキャッシュとアプリケーションのパフォーマンスの向上のための Redis
  • リレーショナル データベース管理用の ORM を Sequelize
  • 一元的な認可とリクエスト処理のためのミドルウェア
  • モジュール式で適切に構造化されているにより、拡張性があり、メンテナンスが容易です

⁉️使用されるテクノロジー

  • Node.js: JavaScript を使用してサーバー側アプリケーションを構築するためのプラットフォーム。もっと詳しく知る
  • GraphQL: 効率的かつ柔軟なデータ取得を可能にする API のクエリ言語。もっと詳しく知る
  • Redis: キャッシュやメッセージ ブローカーによく使用される一時データ ストレージ (メモリ内)。もっと詳しく知る
  • JWT: 安全でシンプルなトークンベースの認証テクノロジー。もっと詳しく知る
  • Sequelize: PostgreSQL、MySQL、およびその他のリレーショナル データベースをサポートする Node.js 用の ORM。もっと詳しく知る

?プロジェクトを設定して実行する手順

1. リポジトリのクローンを作成します

まず、このテンプレート リポジトリのクローンをローカル マシンに作成します。

git clone https://gitlab.com/dioarafi1/graphify-api.git
cd graphify-api

最初から始める場合は、次のコマンドを使用して新しいプロジェクトを初期化します。

git clone https://gitlab.com/dioarafi1/graphify-api.git
cd graphify-api

2. 依存関係のインストール

リポジトリのクローンを作成するか、新しいプロジェクトを作成した後、コマンドを実行して必要な依存関係をインストールします。

mkdir blog-api
cd blog-api
npm init -y

これにより、package.json ファイルにリストされているすべての依存関係がインストールされます。


3. 環境構成

プロジェクトのルート ディレクトリに .env ファイルを作成し、RedisJWT、および Database の次の構成を追加します。

yarn install

データベース構成に従ってユーザー、パスワード、mydatabase を変更します。


4. Sequelize を使用したデータベースの準備

データベースが構成されていない場合は、コマンドを実行して Sequelize を初期化し、モデルを作成します。

DATABASE_URL="postgresql://user:password@localhost:5432/mydatabase"
JWT_SECRET="your_jwt_secret_key"
REDIS_HOST="localhost"
REDIS_PORT="6379"

これにより、プロジェクト内に config、models、migrations のディレクトリ構造が作成されます。次に、UserPost などのアプリケーションに必要なモデルを作成し、移行を実行してデータベースにテーブルを作成します。

yarn sequelize init

データベースが実行されていることを確認してください (たとえば、PostgreSQL または MySQL を使用している)。


5. GraphQL サーバーのセットアップ

Apollo Server と GraphQL の依存関係をインストールします:

yarn sequelize db:migrate

その後、GraphQL サーバー構成ファイル、スキーマ、リゾルバーを作成します。 GraphQL サーバーは次の方法で設定できます:

src/server.ts

yarn add apollo-server graphql

src/graphql/schema.ts

クエリとミューテーション用の GraphQL スキーマを定義します:

import { ApolloServer } from 'apollo-server-express';
import express from 'express';
import { typeDefs, resolvers } from './graphql';
import { authenticateJWT } from './middlewares/auth';
import { sequelize } from './config/database';

const app = express();

// Gunakan middleware JWT
app.use(authenticateJWT);

// Inisialisasi Apollo Server
const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: ({ req }) => ({ user: req.user }),
});

server.applyMiddleware({ app });

const PORT = process.env.PORT || 4000;

app.listen(PORT, async () => {
  console.log(`Server running at http://localhost:${PORT}${server.graphqlPath}`);
  await sequelize.authenticate();
  console.log('Database connected');
});

src/graphql/resolvers.ts

クエリとミューテーションのリゾルバーを実装します:

import { gql } from 'apollo-server-express';

export const typeDefs = gql`
  type User {
    id: ID!
    username: String!
  }

  type Post {
    id: ID!
    title: String!
    content: String!
    user: User!
  }

  type Query {
    posts: [Post]
    post(id: ID!): Post
    users: [User]
  }

  type Mutation {
    createPost(title: String!, content: String!): Post
    register(username: String!, password: String!): User
    login(username: String!, password: String!): String # JWT token
  }
`;

6. 開発用サーバーの実行

hot-reload を使用して開発環境でサーバーを実行するには、次のコマンドを使用します。

import { Post, User } from '../models';
import jwt from 'jsonwebtoken';
import bcrypt from 'bcryptjs';

export const resolvers = {
  Query: {
    posts: () => Post.findAll(),
    post: (_, { id }) => Post.findByPk(id),
    users: () => User.findAll(),
  },
  Mutation: {
    createPost: async (_, { title, content }, { user }) => {
      if (!user) throw new Error('Authentication required');
      const post = await Post.create({ title, content, userId: user.id });
      return post;
    },
    register: async (_, { username, password }) => {
      const hashedPassword = await bcrypt.hash(password, 10);
      const user = await User.create({ username, password: hashedPassword });
      return user;
    },
    login: async (_, { username, password }) => {
      const user = await User.findOne({ where: { username } });
      if (!user) throw new Error('User not found');

      const match = await bcrypt.compare(password, user.password);
      if (!match) throw new Error('Invalid password');

      const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET!, { expiresIn: '1h' });
      return token;
    },
  },
};

サーバーは http://localhost:4000 で実行され、GraphQL プレイグラウンド にアクセスして API クエリと変更をテストできます。


?プロジェクトのディレクトリ構造

このプロジェクト ディレクトリ構造は、アプリケーションのさまざまな部分を分離して、よりモジュール化して保守しやすくするように設計されています。

yarn dev

?導入

実稼働用にプロジェクトを準備するには、次のコマンドを使用して TypeScript を JavaScript にビルドします。

/myapp
├── src
│   ├── middlewares      # Berisi middleware untuk otentikasi (JWT), caching (Redis), dan validasi
│   ├── routes           # Definisi endpoint API dan resolver GraphQL
│   ├── services         # Logika bisnis utama dan pengolahan data
│   ├── app.ts           # File utama untuk inisialisasi aplikasi dan middleware
│   ├── graphql          # Menyimpan konfigurasi GraphQL, schema, dan resolvers
│   ├── models           # Model Sequelize untuk mengelola database relasional
│   ├── config           # File konfigurasi global untuk Redis, JWT, database, dll
│   ├── index.ts         # Entry point aplikasi, menginisialisasi server dan middleware
│   ├── resolvers        # Berisi resolver GraphQL untuk query dan mutasi
│   ├── server.ts        # File untuk setup Apollo Server dan konfigurasi GraphQL
│   ├── schema           # Definisi schema GraphQL
│   ├── types            # TypeScript types dan interfaces untuk GraphQL dan lainnya
│   └── utils            # Berisi helper dan fungsi utility
├──

 .env                 # File konfigurasi environment (Redis, JWT Secret, Database URL)
├── package.json         # Metadata proyek dan dependensi
└── tsconfig.json        # Konfigurasi TypeScript

出力は dist/ フォルダーに保存され、運用サーバーにデプロイする準備が整います。

クラウドプラットフォームの準備

このプロジェクトは、次の手順で HerakuAWSDigitalOcean などのプラットフォームにデプロイできます。

  1. コードを Git リポジトリにプッシュします (GitHub、GitLab など)。
  2. 選択したクラウド プラットフォーム (Redis、JWT シークレット、URL データベース) で 環境変数を設定します
  3. コマンドまたはクラウド プラットフォームからの統合を使用して、プロジェクトをデプロイします

?リソース

  • GraphQL ドキュメント
  • Redis ドキュメント
  • JWT ドキュメント
  • ドキュメントを続行する

上記の手順に従うことで、RedisJWT、および Sequelize を使用して GraphQL API アプリケーションを実行および開発できるようになります。

以上がNode.js スターター プロジェクトのデンガン GraphQL、Redis、JWT、および Sequelizeの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール