ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js で API を構造化するための初心者ガイド: クリーンでスケーラブル

Node.js で API を構造化するための初心者ガイド: クリーンでスケーラブル

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-23 22:32:11850ブラウズ

Beginner

Node.js REST API アーキテクチャのスタートガイド

このガイドは、明確に構造化された Node.js REST API を構築する方法を学習するのに役立ちます。スケーラブルで保守可能な API を構築するためのフォルダー構成、ベスト プラクティス、ヒントが含まれています。


目次

  • Node.js REST API アーキテクチャのスタートガイド
    • 目次
    • Node.js API アーキテクチャの概要
    • API アーキテクチャが重要なのはなぜですか?
    • API アーキテクチャの中心的な概念
    • 基本的な API フォルダー構造
    • 詳しい手順
        1. server.js
        1. 環境変数 (.env)
        1. ルーティング
        1. コントローラー
        1. モデル
        1. 構成
    • ベストプラクティス
    • 実際のケース
    • 概要
    • 結論とフィードバックは?
    • 連絡を取り合いますか?

Node.js API アーキテクチャの概要

API は、フロントエンドとサーバーを接続する、最新の Web アプリケーションの基礎です。ただし、API の構造が不十分だと、コードが乱雑になり、保守が困難になる可能性があります。 Node.js を初めて使用する人にとって、スケーラブルでクリーンなアプリケーションを構築するには、最初からプロジェクトを編成する方法を理解することが重要です。

このガイドでは、Node.js REST API の基本アーキテクチャについて説明します。重要事項とベスト プラクティスについて説明し、プロジェクトに適用できる実用的なフォルダー構造を提供します。 フォルダー構造について詳しく読む


API アーキテクチャが重要なのはなぜですか?

多くの開発者は、開始時にすべてを 1 つのファイルにまとめます。これは小規模なプロジェクトでは機能しますが、コード ベースが大きくなると悪夢になる可能性があります。適切な API 構造は以下に役立ちます:

  • 保守性: コードの検索と変更が容易になります。
  • スケーラビリティ: アプリケーションを中断することなく拡張できます。
  • コラボレーション: チームがコードをすぐに理解できるようにします。
  • 可読性: 明確なコードはデバッグと拡張が容易です。

API アーキテクチャの中心的な概念

フォルダー構造に入る前に、いくつかの基本原則を理解しましょう:

  1. 懸念事項の分離: 責任の混乱を避けるために、アプリケーションの異なる部分 (ルーティング、データベース、ロジックなど) を別個のファイルに保存します。
  2. モジュール化: コードを再利用可能なモジュールに分割します。
  3. 環境変数: .env ファイルを使用して、データベース認証情報などの機密データを安全に保存します。

基本的な API フォルダー構造

これは小規模プロジェクト向けのシンプルな構造で、まったくの初心者に最適です:

<code>my-api/
├── server.js          # 入口点
├── package.json       # 项目元数据和依赖项
├── .env               # 环境变量
├── /routes            # API 路由定义
│   └── userRoutes.js  # 示例:用户相关的路由
├── /controllers       # 请求处理逻辑
│   └── userController.js
├── /models            # 数据库模型或模式
│   └── userModel.js
└── /config            # 配置文件
    └── db.js          # 数据库连接设置</code>

詳しい手順

1.サーバー.js

アプリケーションへのエントリポイント:

  • Express サーバーをセットアップします。
  • ミドルウェアとルートをロードします。
<code>my-api/
├── server.js          # 入口点
├── package.json       # 项目元数据和依赖项
├── .env               # 环境变量
├── /routes            # API 路由定义
│   └── userRoutes.js  # 示例:用户相关的路由
├── /controllers       # 请求处理逻辑
│   └── userController.js
├── /models            # 数据库模型或模式
│   └── userModel.js
└── /config            # 配置文件
    └── db.js          # 数据库连接设置</code>

2. 環境変数 (.env)

.env ファイルを使用して機密データを保存します:

<code class="language-javascript">require('dotenv').config();
const express = require('express');
const userRoutes = require('./routes/userRoutes');
const connectDB = require('./config/db');

const app = express();
const PORT = process.env.PORT || 5000;

// 中间件
app.use(express.json());

// 数据库连接
connectDB();

// 路由
app.use('/api/users', userRoutes);

app.listen(PORT, () => console.log(`服务器运行在端口 ${PORT}`));</code>

dotenv をインストールして、これらの変数を process.env にロードします:

<code>PORT=5000
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/myDatabase</code>

3. ルーティング

ルートは HTTP リクエストを処理し、適切なコントローラに送信します。

/routes/userRoutes.js:

<code class="language-bash">npm install dotenv</code>

4. コントローラー

コントローラーにはリクエストを処理するロジックが含まれています。

/controllers/userController.js:

<code class="language-javascript">const express = require('express');
const { getAllUsers, createUser } = require('../controllers/userController');
const router = express.Router();

// 获取所有用户
router.get('/', getAllUsers);

// POST 创建新用户
router.post('/', createUser);

module.exports = router;</code>

5. モデル

モデルはデータベースドキュメントの構造を定義します。この例では、MongoDB と Mongoose を使用します。

/models/userModel.js:

<code class="language-javascript">const User = require('../models/userModel');

// 获取所有用户
const getAllUsers = async (req, res) => {
  try {
    const users = await User.find();
    res.status(200).json(users);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

// POST 创建新用户
const createUser = async (req, res) => {
  try {
    const { name, email } = req.body;
    const newUser = await User.create({ name, email });
    res.status(201).json(newUser);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

module.exports = { getAllUsers, createUser };</code>

6. 構成

構成フォルダーには、データベースなどの外部リソースに接続するファイルが含まれています。

/config/db.js:

<code class="language-javascript">const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true }
});

module.exports = mongoose.model('User', userSchema);</code>

ベストプラクティス

  1. コードを DRY に保ちます (同じことを繰り返さないでください) : 可能な限り、ロジックの重複を避け、関数とモジュールを再利用します。
  2. エラー処理: エラーを適切に処理するには、常に try-catch ブロックまたはミドルウェアを使用してください。
  3. ミドルウェアを使用する: 認証、リクエストの検証、ログ記録などのタスクに使用します。
  4. API バージョニング: バージョン管理 (/api/v1/users) を使用して、古いクライアントを壊さずに将来の更新を処理します。

実際のケース

ここにいくつかの練習アイデアがあります:

  • ブログ API (ユーザー、投稿、コメント)。
  • タスク マネージャー API (タスク、ユーザー、期限)。

概要

クリーンで構造化された API から始めることが、保守可能なプロジェクトの基礎です。懸念事項を分離し、コードを論理的に整理することで、アプリケーションの成長に備えることができます。

これは単なる出発点であることを忘れないでください。経験が増えるにつれて、この構造を適応および拡張して、より大規模で複雑なプロジェクトに対応できるようになります。

今後の記事で検討してほしい具体的な課題やアイデアはありますか?コメントでお知らせください!


結論とフィードバックは?

お読みいただきありがとうございます!トピックを単純化し、貴重な洞察を提供するのに役立つことを願っています。役に立ったと思ったら、私をフォローして、Web 開発やその他の技術的なトピックに関するよりわかりやすいコンテンツを入手してください。

あなたのフィードバックは重要です!提案、質問、改善してほしい点など、コメントセクションでご意見をお聞かせください。絵文字を自由に使用して、この投稿を読んでどう感じたかをお知らせください。 ?


連絡を取り合いますか?

あなたとつながりたいです!これからもアイデアを交換し、お互いから学び、一緒に成長していきましょう。

ソーシャルメディアで私をフォローして、つながりを保ちましょう:

  • ツイッター
  • リンクトイン

皆さんからのご意見をお待ちしており、好奇心旺盛な人たちのコミュニティが成長することを楽しみにしています。 ?

以上がNode.js で API を構造化するための初心者ガイド: クリーンでスケーラブルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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