ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejs REST API をデプロイする

Nodejs REST API をデプロイする

WBOY
WBOYオリジナル
2023-05-11 14:28:06603ブラウズ

今日のインターネット時代では、効率的で高速なバックエンド サービスを構築することが不可欠です。 NodeJS はこの分野で優れており、効率的な Web サービスを迅速かつ簡単に構築できます。 REST API は、今日のインターネット業界で Web サービスを構築する非常に一般的な方法でもあります。コードの量を大幅に削減し、ポート処理を簡素化し、多くの利点をもたらします。この記事では、NodeJS と ExpressJS を使用して REST API を迅速にデプロイする方法を学びます。

環境の準備

開始する前に、環境をセットアップする必要があります。

  1. テキスト エディター (VS Code を推奨)
  2. Node.js (公式 Web サイトからダウンロードしてインストールします)
  3. Postman (テスト ツール、公式 Web サイトからダウンロードしてインストールできます)
#プロジェクトを初期化します

まず、ターミナルを開いて新しいプロジェクト ディレクトリを作成します:

mkdir project-name
cd project-name

次に、

npm init を使用して新しいパッケージを作成します:

npm init

npm init 作成者名、プロジェクト名、バージョンなどの基本情報の入力を求められます。一部のデフォルト設定は直接使用でき、独自の情報の一部を変更するだけです。

次に、次の依存関係をインストールする必要があります。

npm install express body-parser cors —save

    Express は、REST API の構築に使用するフレームワークです。
  • body-parser は、POST リクエストと JSON データを解析するためのミドルウェアです。
  • Cors は、Web アプリケーションが別のドメインで CORS (Cross-Origin Resource Sharing) を有効にすることを可能にするプラグインです
サービスを作成します

それでは、

app.js という名前の新しいファイルを作成します。これが NodeJS REST API サービスの開始点になります。 Express フレームワークを利用してこのサービスを構築できます。

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const app = express()

const port = 3000

app.use(cors())

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

app.listen(port, () => {
  console.log(`Server running on port ${port}`)
})

上記のコード スニペットでは、Express、body-parser、および cors をインポートします。また、ポート 3000 でリッスンする

app.listen() メソッドも使用しました。最後に、app.use() メソッドを通じて cors および body-parser ミドルウェアを有効にします。

ルートの作成

次のステップでは、REST API サービスの実装に必要なルートを作成します。ルーティングは、リクエストがサービスに入った後にサービスがどのように応答するかに関する一連のルールとして理解できます。

プロジェクトのルート ディレクトリに

routes フォルダーを作成し、その中に index.js ファイルを作成し、次の内容を追加します:

const express = require('express')
const router = express.Router()

router.get('/posts', (req, res) => {
  res.status(200).send('All posts')
})

module.exports = router;

上記のコードでは、新しいルートを作成し、そのルート上の

/posts に対する GET リクエストを作成します。リクエストはステータス コード 200 と「すべての投稿」というテキストを返します。

次に、ルートを有効にします。

app.js ファイルに戻り、次のコードを追加します。

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const app = express()

const postRoutes = require('./routes/index');
const port = 3000

app.use(cors())

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

app.use('/api', postRoutes);

app.listen(port, () => {
  console.log(`Server running on port ${port}`)
})

上記のコードでは、

routes/index.js で定義されたルートをインポートし、 app.use('/api', postRoutes) メソッドを使用して、REST API サービスにルートを適用します。次に、localhost:3000/api/posts で GET リクエストを呼び出すと、「すべての投稿」が返されるはずです。

データベース接続

もちろん、実際のプロジェクトでは、リクエストして取得する必要があるデータはデータベースに保存されるため、ここでは NodeJS を使用して接続する方法について説明する必要があります。データベース。

MongoDB をデータベースとして使用し、

mongoose を使用してそれに接続します。コマンド ラインで次のコマンドを実行することで、mongoose をインストールできます:

npm install mongoose --save

次に、

models フォルダーを作成し、その中に新しいファイル post.js を追加しましょう。簡単なデータモデルを説明します。

const mongoose = require('mongoose');

const postSchema = new mongoose.Schema({
  title: { type: String, required: true },
  content: { type: String, required: true },
  author: { type: String, required: true },
}, { timestamps: true });

module.exports = mongoose.model('Post', postSchema);

上記のコードでは、データを定義するために

Post というモデルを定義し、作成時にタイムスタンプ オプションを使用しました。

ここで、Mongoose を使用してローカル MongoDB データベースに接続します。

app.js ファイルに次のコンテンツを追加できます:

const mongoose = require('mongoose');
const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')

const postRoutes = require('./routes/index');
const PORT = process.env.PORT || 3000;

const app = express();

app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

mongoose.connect('mongodb://localhost/posts', { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
db.once('open', function() {
    console.log('Successfully connected to MongoDB!');
})

app.use('/api', postRoutes);

app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

上記のコードのデータベース URL は

mongodb://localhost/posts に設定されます。これは、データベース名が posts であり、ローカルの MongoDB インスタンスに存在することを意味します。 Mongoose ポートにはデフォルトのポート (27017) も使用しました。 Mongoose の非推奨のコードは修正されているため、useUnifiedTopology オプションを使用する必要があることに注意してください。

ルーティングの実装

サーバーにルーティングを設定し、データベースに正常に接続できました。次に、POST リクエストを処理し、データベースからデータを取得するために、さらに多くのルートを構成します。

まず、新しい POST リクエストをルートに追加し、タイトル、コンテンツ、作成者、その他の必要な情報をリクエスト本文から抽出します。そしてデータをデータベースに保存します。ここでは、「posts」という名前のデータベースを想定し、

Post モデル自体を渡す MongoDB ドキュメントを作成します。

const express = require('express');
const router = express.Router();
const Post = require('../models/post.js');

router.get('/posts', (req, res) => {
  Post.find()
  .then(data => res.json(data))
  .catch(err => res.status(400).json(`Error: ${err}`));
});

router.get('/posts/:id', (req, res) => {
  Post.findById(req.params.id)
  .then(data => res.json(data))
  .catch(err => res.status(400).json(`Error: ${err}`));
});

router.post('/posts', (req, res) => {
  const newPost = new Post(req.body);
  newPost.save()
  .then(() => res.json('Post added!'))
  .catch(err => res.status(400).json(`Error: ${err}`));
});

module.exports = router;

上部のコードでは、まずモデル ファイルをインポートし、GET または POST リクエストに必要なルートをすべて作成します。 GET リクエストは

Post.find() を使用して MongoDB データベースからすべてのデータベース エントリを抽出しますが、POST リクエストは newPost.save() を使用して新しいデータをデータベース テーブルに保存します。

Postman を使用したテスト

上記の手順を完了すると、Postman を使用して REST API をテストできます。

まず、GET リクエストを使用してデータを取得してみます。http://localhost:3000/posts にアクセスすると、すべての投稿を取得できます。

次に、POST リクエストを使用して新しいデータを作成します。これを行うには、http://localhost:3000/posts にアクセスし、本文に新しい JSON データ本体を追加します。リクエストの新しい記事を作成します。

最後に、GET リクエストを使用して単一のエントリを取得することもできます。http://localhost:3000/posts/:id にアクセスして、ID によって提供される単一の投稿を取得できます。 。

これらの簡単な手順で、簡単な REST API を実装し、MongoDB データベースに接続できます。もちろん、エントリの更新や削除などの操作など、この API を継続的に改善できる操作は他にもたくさんありますが、プロセスをより深く理解するために、これらの関数を自分で作成してみることをお勧めします。

以上がNodejs REST API をデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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