在現今的網路時代,建立高效率、快速的後端服務是不可或缺的。 NodeJS 在這個領域有著優異的表現,可以用快速且容易建立高效率的 web 服務。而 REST API 再在今天的網路產業中也是非常流行的一種web服務建構方式。它可以大幅減少程式碼量、簡化連接埠處理,除此之外還有很多好處。在這篇文章中,我們將一起來學習如何使用 NodeJS 和 ExpressJS 快速部署 REST API。
在開始之前,我們需要建構一下環境:
首先,我們打開終端機並建立一個新的專案目錄:
mkdir project-name cd project-name
然後,我們使用npm init
建立一個新的package:
npm init
npm init
將會要求你輸入一些基本訊息,例如作者名,項目名稱,版本等。一些預設的設定是可以直接使用的,只需修改一些你自己的資訊。
接下來,我們將需要安裝以下幾個依賴:
npm install express body-parser cors —save
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 的中間件。
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」。
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 選項。
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模型本身來建立一個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 對我們的 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中文網其他相關文章!