最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

手把手教你用node.js搭建一個(gè)Web服務(wù)

 更新時(shí)間:2024年04月26日 08:31:09   作者:劉先生..  
Web服務(wù)器一般指網(wǎng)站服務(wù)器,是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,下面這篇文章主要給大家介紹了關(guān)于用node.js搭建一個(gè)Web服務(wù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、引言

Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境,可用于開(kāi)發(fā)各種類型的應(yīng)用程序,包括 Web 服務(wù)。本文將介紹如何使用 Node.js 搭建一個(gè)簡(jiǎn)單的 Web 服務(wù),并附帶示例代碼。

二、創(chuàng)建 node 項(xiàng)目

 創(chuàng)建一個(gè)名為 node-serve 的文件夾,然后在當(dāng)前文件下輸入初始化node項(xiàng)目命令。

npm init

然后一直按回車(chē)即可,完成之后可生成一個(gè) package.json 文件。

中間的配置過(guò)程可后續(xù)在生成的 package.json 文件中配置 

 在當(dāng)前文件夾下新建一個(gè) index.js 的文件,為當(dāng)前項(xiàng)目的主入口文件。

到這里 node 項(xiàng)目基本就創(chuàng)建完成了。

三、創(chuàng)建 Web 服務(wù)

下載 express 包

npm install express --save

編寫(xiě) index.js 文件,引入 express 并啟動(dòng)一個(gè)服務(wù)

const express = require('express');  
const app = express();  
  
// 設(shè)置路由 ( 接口 )
app.get('/', (req, res) => {  
  res.send('Hello World!');  
});  
  
// 啟動(dòng)服務(wù)  
app.listen(3000, () => {  
  console.log('Server started on port 3000');  
});

在這個(gè)示例中,我們創(chuàng)建了一個(gè) express 應(yīng)用,并設(shè)置了一個(gè)路由,當(dāng)訪問(wèn)根路徑 / 時(shí),返回字符串 'Hello World!'

在當(dāng)前文件夾下使用終端命令啟動(dòng)服務(wù)

node index.js

使用 postman 測(cè)試如下

四、使用中間件 

中間件是指那些在處理 HTTP 請(qǐng)求和響應(yīng)周期中的某個(gè)特定階段執(zhí)行代碼的函數(shù)。這些函數(shù)可以執(zhí)行各種任務(wù),例如解析請(qǐng)求體、驗(yàn)證身份、記錄日志、路由處理等。

body-parser

body-parser 是一個(gè) Node.js 中間件,用于解析 HTTP 請(qǐng)求體。它提供了多種解析器,如 JSON、Raw、Text 和 URL-encoded form,以處理不同類型的請(qǐng)求體。

const express = require('express');  
const bodyParser = require('body-parser');  
const app = express();  
  
// 使用 body-parser 中間件解析 JSON 請(qǐng)求體  
app.use(bodyParser.json());  
  
// 使用 body-parser 中間件解析 URL-encoded form 請(qǐng)求體  
app.use(bodyParser.urlencoded({ extended: true }));  
  
// 定義路由處理程序  
app.get('/', (req, res) => {  
  res.send('Hello World!');  
});  
  
app.post('/api/data', (req, res) => {  
  // 解析請(qǐng)求體中的 JSON 數(shù)據(jù)  
  const data = req.body;  
  // 處理數(shù)據(jù)...  
});  
  
app.listen(3000, () => {  
  console.log('Server started on port 3000');  
});

自定義中間件

const express = require('express');  
const app = express();  
  
// 定義一個(gè)中間件函數(shù)  
function myMiddleware(req, res, next) {  
  console.log('Middleware executed');  
  next(); // 調(diào)用 next() 函數(shù)以將控制權(quán)傳遞給下一個(gè)中間件或路由處理器  
}  
  
app.use(myMiddleware); // 將中間件應(yīng)用到應(yīng)用中  
  
app.get('/', (req, res) => {  
  res.send('Hello World!');  
});  
  
app.listen(3000, () => {  
  console.log('Server started on port 3000');  
});

五、http 請(qǐng)求和 http 響應(yīng)

http 請(qǐng)求

// HTTP請(qǐng)求方法(GET、POST、PUT、DELETE等)。
req.method

// HTTP請(qǐng)求的URL。
req.url

// 請(qǐng)求的URL路徑名。
req.path

// 包含在URL查詢字符串中的參數(shù)對(duì)象。
req.query

// 包含HTTP請(qǐng)求頭的對(duì)象。
req.headers

// 包含在POST請(qǐng)求中的請(qǐng)求主體的對(duì)象。需要使用body-parser中間件才能訪問(wèn)。
req.body

// 包含路由參數(shù)的對(duì)象。例如,對(duì)于路徑/user/:id,req.params.id將包含匹配的ID。
req.params

// 客戶端的IP地址。
req.ip

// 請(qǐng)求的主機(jī)名。
req.host

// 獲取HTTP請(qǐng)求頭的指定字段的值。
req.get(field)

// 獲取客戶端的cookie。選項(xiàng)可以包括簽名選項(xiàng)(如果cookie是加密的)。
req.cookie(name[, options])

以上是常見(jiàn)請(qǐng)求對(duì)象及方法 

http 響應(yīng)

res 代表 HTTP 響應(yīng)對(duì)象。通過(guò) res,你可以設(shè)置 HTTP 響應(yīng)的狀態(tài)碼、響應(yīng)頭和響應(yīng)主體。

// HTTP 響應(yīng)的狀態(tài)碼,表示請(qǐng)求的處理結(jié)果。例如,200 表示成功,404 表示找不到資源。
res.status(code)

//設(shè)置 HTTP 響應(yīng)的響應(yīng)頭。name 參數(shù)是響應(yīng)頭的名稱,value 參數(shù)是響應(yīng)頭的值。
res.setHeader(name, value)

//獲取 HTTP 響應(yīng)的響應(yīng)頭。name 參數(shù)是響應(yīng)頭的名稱。
res.getHeader(name)

//移除 HTTP 響應(yīng)的響應(yīng)頭。name 參數(shù)是響應(yīng)頭的名稱。
res.removeHeader(name)

//設(shè)置一個(gè) HTTP cookie,并將值存儲(chǔ)在客戶端上。
res.cookie(name, value)

//設(shè)置 HTTP 響應(yīng)一個(gè) JSON 對(duì)象、一個(gè)數(shù)組或者一個(gè)字符串。
res.json(json)

//響應(yīng)一個(gè)字符串、一個(gè)數(shù)字、一個(gè)布爾值或者一個(gè)對(duì)象。
res.send(body)

//渲染一個(gè)視圖模板并將結(jié)果發(fā)送到客戶端。
res.render(view, [options], callback)

//將 HTTP 響應(yīng)標(biāo)記為附件,通常用于下載功能。filename 參數(shù)是可選的,表示要下載的文件名。
res.attachment([filename])

//將指定的文件作為 HTTP 響應(yīng)發(fā)送給客戶端。path 參數(shù)是文件的路徑,options 參數(shù)是可選的,用于配置文件的響應(yīng)選項(xiàng)。
res.sendFile(path[, options])

//將指定的文件作為 HTTP 下載提供給客戶端。path 參數(shù)是文件的路徑,filename 參數(shù)是可選的,表示要下載的文件名。
res.download(path[, filename])

//將客戶端重定向到指定的 URL。
res.redirect(url)

以上是常見(jiàn)響應(yīng)方法

六、使用路由(多文件)

創(chuàng)建 router.js 

const express = require('express');  
const router = express.Router();  
  
// 定義一個(gè)路由處理程序,用于處理GET請(qǐng)求  
router.get('/test', function(req, res) {  
  res.send('Hello World!');  
});  
  
// 定義另一個(gè)路由處理程序,用于處理POST請(qǐng)求  
router.post('/submit', function(req, res) {  
  res.send('Submit received!');  
});  
  
module.exports = router;

在 index.js 中引用 router.js

const express = require('express');  
const app = express();
 

const router = require('./router'); // 導(dǎo)入路由器對(duì)象  
// 將路由器對(duì)象添加到應(yīng)用程序中
app.use(router); //(訪問(wèn) localhos/test)
// 將路由器對(duì)象添加到應(yīng)用程序中(加入自定義統(tǒng)一前綴)
app.use('/api',router); //(訪問(wèn) localhost/api/test)
  
app.listen(3000, function() {  
  console.log('Server is running on port 3000');  
});

總結(jié) 

到此這篇關(guān)于用node.js搭建一個(gè)Web服務(wù)的文章就介紹到這了,更多相關(guān)node.js搭建Web服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nodejs微信掃碼支付功能實(shí)現(xiàn)

    nodejs微信掃碼支付功能實(shí)現(xiàn)

    本片文章通過(guò)代碼示例給大家詳細(xì)講述了如何用nodejs寫(xiě)出微信掃碼支付這個(gè)功能,有興趣的朋友可以參考下。
    2018-02-02
  • Node.js中同步和異步編程的區(qū)別及使用方法

    Node.js中同步和異步編程的區(qū)別及使用方法

    在Node.js中,同步和異步編程是兩種不同的處理方式。同步方式會(huì)阻塞程序的執(zhí)行,而異步方式則不會(huì)。通過(guò)掌握它們的區(qū)別和使用方法,可以更好地實(shí)現(xiàn)程序的性能優(yōu)化和功能擴(kuò)展。同時(shí),需要注意異步編程中的回調(diào)地獄問(wèn)題,使用Promise可以更好地處理異步編程
    2023-05-05
  • Node.js中使用中文產(chǎn)生亂碼的問(wèn)題及解決

    Node.js中使用中文產(chǎn)生亂碼的問(wèn)題及解決

    文章介紹了Node.js平臺(tái)在處理中文字符時(shí)可能出現(xiàn)的亂碼問(wèn)題,分析了問(wèn)題原因,并提供了兩種解決方法:使用writHeader和write方法以及使用setHeader方法
    2026-01-01
  • sublime text配置node.js調(diào)試(圖文教程)

    sublime text配置node.js調(diào)試(圖文教程)

    下面小編就為大家分享一篇sublime text配置node.js調(diào)試(圖文教程),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 防止Node.js中錯(cuò)誤導(dǎo)致進(jìn)程阻塞的辦法

    防止Node.js中錯(cuò)誤導(dǎo)致進(jìn)程阻塞的辦法

    Node.js我們用到非常的多了,如果我們開(kāi)發(fā)不當(dāng)可能因錯(cuò)誤導(dǎo)致進(jìn)程阻塞問(wèn)題,對(duì)于進(jìn)程阻塞問(wèn)題一直是個(gè)頭痛的事情,今天我們一起來(lái)看一篇關(guān)于Node.js防止錯(cuò)誤導(dǎo)致的進(jìn)程阻塞示例,下面一起來(lái)看看。
    2016-08-08
  • 什么是MEAN?JavaScript編程中的MEAN是什么意思?

    什么是MEAN?JavaScript編程中的MEAN是什么意思?

    這篇文章主要介紹了什么是MEAN?JavaScript編程中的MEAN是什么意思?,跟lampp一樣,MEAN是指現(xiàn)代web應(yīng)用全棧開(kāi)發(fā)工具一個(gè)組合,需要的朋友可以參考下
    2014-12-12
  • Node.js對(duì)MongoDB進(jìn)行增刪改查操作的實(shí)例代碼

    Node.js對(duì)MongoDB進(jìn)行增刪改查操作的實(shí)例代碼

    這篇文章主要介紹了Node.js對(duì)MongoDB進(jìn)行增刪改查操作 ,需要的朋友可以參考下
    2019-04-04
  • 一文學(xué)會(huì)如何升級(jí)npm管理的各依賴版本

    一文學(xué)會(huì)如何升級(jí)npm管理的各依賴版本

    npm在前端開(kāi)發(fā)流程中提供了非常完善的自動(dòng)化工具鏈,已成為每個(gè)前端開(kāi)發(fā)者必備的工具,下面這篇文章主要給大家介紹了關(guān)于如何升級(jí)npm管理的各依賴版本,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 如何初始化一個(gè)nodejs工程(附完整步驟)

    如何初始化一個(gè)nodejs工程(附完整步驟)

    nodejs初始化的文章相當(dāng)?shù)亩?多看幾篇文章基本就可以大體了解了,這篇文章主要介紹了如何初始化一個(gè)nodejs工程的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-08-08
  • node安裝成功但npm無(wú)法使用的解決方法

    node安裝成功但npm無(wú)法使用的解決方法

    Node安裝成功但npm無(wú)法使用,可能因環(huán)境變量未配置或nvm導(dǎo)致的node_modules缺失,需手動(dòng)驗(yàn)證路徑并正確設(shè)置環(huán)境變量,感興趣的可以了解一下
    2025-06-06

最新評(píng)論

东莞市| 兴宁市| 江川县| 武鸣县| 台北县| 丰台区| 广平县| 海城市| 寻甸| 乌鲁木齐县| 祁阳县| 兴义市| 印江| 富蕴县| 砚山县| 曲松县| 南澳县| 连江县| 遵化市| 桓仁| 建水县| 高安市| 平谷区| 丰都县| 宜兴市| 湘西| 孟州市| 清苑县| 房产| 舟曲县| 乌什县| 民权县| 塔城市| 奉新县| 通道| 高青县| 屯门区| 五河县| 库尔勒市| 安化县| 彰化县|