首頁 >web前端 >前端問答 >部署nodejs rest api

部署nodejs rest api

WBOY
WBOY原創
2023-05-11 14:28:06606瀏覽

在現今的網路時代,建立高效率、快速的後端服務是不可或缺的。 NodeJS 在這個領域有著優異的表現,可以用快速且容易建立高效率的 web 服務。而 REST API 再在今天的網路產業中也是非常流行的一種web服務建構方式。它可以大幅減少程式碼量、簡化連接埠處理,除此之外還有很多好處。在這篇文章中,我們將一起來學習如何使用 NodeJS 和 ExpressJS 快速部署 REST API。

環境準備

在開始之前,我們需要建構一下環境:

  1. #一個文字編輯器(推薦VS Code)
  2. Node. js(官網下載並安裝)
  3. Postman(測試工具,可在官網下載並安裝)

初始化專案

首先,我們打開終端機並建立一個新的專案目錄:

mkdir project-name
cd project-name

然後,我們使用npm init 建立一個新的package:

npm init

npm init 將會要求你輸入一些基本訊息,例如作者名,項目名稱,版本等。一些預設的設定是可以直接使用的,只需修改一些你自己的資訊。

接下來,我們將需要安裝以下幾個依賴:

npm install express body-parser cors —save
  • Express是我們用來建立REST API的框架。
  • body-parser是一個中間件,用於解析POST請求和JSON資料。
  • Cors是一個插件,允許Web應用程式在另一個網域上啟用CORS(跨網域資源共用)

建立服務

##現在,讓我們來建立一個名為

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和文字「All posts」。

接下來,我們將啟用該路由。我們回到

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請求時,它應該會傳回「All posts」。

資料庫連接

當然,在真正的專案中我們需要請求和取得的資料是會放在資料庫中儲存的,所以我們需要在此處討論如何使用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的模型,以定義我們的數據,並且在創建它時使用了 timestamps 選項。

現在,我們要使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn