這篇文章帶大家了解一下node.js中的熱重啟、get請求、post請求和中間件,希望對大家有幫助!
一、node熱重啟
#1.安裝
## npm i nodemon
2.運行啟動
nodemon .bin/www##二、關於get請求
一般在網站開發中,get都用作資料獲取和查詢,類似於資料庫中的查詢操作,當伺服器解析前台資源後即傳輸對應內容;而查詢字串是在URL上進行的,形如:
http://localhost:8080/login?goods1=0001&goods2=0002#取得前台get請求透過req.query可以取得使用者傳送的get請求,之後透過
node http://localhost:8080/login?goods1=0001&goods2=0002#回應的話則通過:
req.query
他會取得到全部數據,或
req.query.goods1 req.query.goods2
來單獨或去每一個數據。總之不同的需求對應不同的業務,大家按自己的需要來取得;
#實例下面透過一個實例來對取得get參數進行一個總結:
HTML:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <form action="http://localhost:8080/login" method="get"> 用户: <input type="text" name="user" id="user" placeholder="用户名"/> <br> 密码: <input type="password" name="password" id="password" placeholder="密码"/> <br> <input type="submit" value="提交"/> </form> </body> </html>
node:
const express = require("express"); var app = express(); app.get("/",function(req,res){ res.send("主页"); }); app.get("/login",function(req,res){ console.log(req.query); res.send("登录路由,user为:"+req.query.user+"==> password为:"+req.query.password); }); app.listen(8080);三、關於POST請求
post方法作為http請求很重要的一部分,幾乎所有的網站都有用到它,與get不同,post請求更像是在伺服器上做修改操作,它一般用於資料資源的更新。相較於get請求,post所請求的資料會更加安全。上一章我們發現get請求會在網址列顯示輸入的使用者名稱和密碼(有中文時會轉換為BASE64加密),而post請求會在網址列顯示輸入的使用者名稱和密碼(有中文時會轉換為BASE64加密),而post請求會在網址列顯示輸入的包體中,這使得別人無法直接看到用戶名和密碼!
Express如何設定POST請求#1.首先我們得知道在form表單進行post請求,
enctype屬性一般設定為“application/x-www-form-urlencoded
”,如果設定成multipart/form-data
,則多用於檔案上傳,如下:<pre class='brush:php;toolbar:false;'><form action="#" method="post" enctype="application/x-www-form-urlencoded">
</form></pre>
2.設定解析body中間件
app.use(express.urlencoded())
3.取得body資料
req.body.username#登陸案例:
##HTML:<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1 id="登陆">登陆</h1>
<form action="/login" method="POST">
<div>
用户名:<input type="text" name="username">
</div>
<div>
密码:<input type="password" name="password">
</div>
<button>登陆</button>
</form>
</body>
</html>
APP.JSvar express = require('express'); var path = require('path') var app = express(); var sqlQuery = require('./lcMysql') // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(express.static(path.join(__dirname, 'public'))); //解析post提交的数据 app.use(express.urlencoded()) //搜索首页 app.get('/',(req,res)=>{ res.render('index.ejs') }) //登陆页 app.get('/login',(req,res)=>{ res.render('login') }) //处理登陆请求 app.post('/login',async (req,res)=>{ //获取用户名和密码 let username = req.body.username let password = req.body.password //查询数据库是否由此用户名和密码 let sqlStr = 'select * from user where username = ? and password = ?'; let arr = [username,password]; let result = await sqlQuery(sqlStr,arr) if(result.length == 0 ){ res.send("登陆失败") }else{ res.send("登陆成功") } }) module.exports = app;
四、中間件
從字面意思,我們可以了解到它大概就是做中間代理操作,事實也是如此;大多數情況下,中間件就是在做接收到請求和發送回應中間的一系列操作。事實上,express是一個路由和中間件的web框架,Express 應用程式基本上是一系列中間件函數的呼叫。
1.瀏覽器傳送請求2.express接受請求中間處理的程序#3.路由函數處理渲染(req,res) 4.res.render渲染中間件函數可以執行下列任務:執行任何程式碼。
- 對請求和回應物件進行更改。
- 結束請求/回應循環。
- 呼叫堆疊中的下一個中間件函數。
- 中間件也分為應用層中介軟體、路由中間件、內建中間件、錯誤處理中介軟體和第三方中間件。以下分別對以下進行說明:
1.應用層中間件應用層級中間鍵綁定到app物件使用app.use和app.METHOD()-需要處理http請求的方法,例如GET、PUT、POST,將先前的get或post替換為use就行。例如下面實例:const express=require("express");
var app=express();
//匹配路由之前的操作
app.use(function(req,res,next()){
console.log("访问之前");
});
app.get("/",function(req,res){
res.send("主页");
});
app.listen(8080);
這時我們會發現http://localhost:8080/
位址一直在加載,但命令列顯示了“訪問之前”,說明程式並不會同步執行,如果使用next來是路由繼續向下匹配,那麼就能又得到主頁資料了:const express=require("express"); var app=express(); //匹配路由之前的操作 app.use(function(req,res,next){ console.log("访问之前"); next(); }); app.get("/",function(req,res){ res.send("主页"); }); app.listen(8080);當然也可以簡化寫法:
const express=require("express"); var app=express(); app.use(function(req,res,next){ console.log("访问之前"); next(); },function(req,res){ res.send("主页"); }); app.listen(8080);因此,在進行路由匹配之前或再錄又要繼續向下執行時想做個操作,那麼應用層中間件無疑是好的選擇。
2.路由中间件
路由级中间件和应用级中间件类似,只不过他需要绑定express.Router();
var router = express.Router()
在匹配路由时,我们使用 router.use() 或 router.VERB() ,路由中间件结合多次callback可用于用户登录及用户状态检测。
const express = require("express"); var app = express(); var router=express.Router(); router.use("/",function(req,res,next){ console.log("匹配前"); next(); }); router.use("/user",function(req,res,next){ console.log("匹配地址:",req.originalUrl); next(); },function(req,res){ res.send("用户登录"); }); app.use("/",router); app.listen(8080);
总之在检测用户登录和引导用户应该访问哪个页面是,路由中间件绝对好用。
3.错误处理中间件
顾名思义,它是指当我们匹配不到路由时所执行的操作。错误处理中间件和其他中间件基本一样,只不过其需要开发者提供4个自变量参数。
app.use((err, req, res, next) => { res.sendStatus(err.httpStatusCode).json(err); });
一般情况下,我们把错误处理放在最下面,这样我们即可对错误进行集中处理。
const express=require("express"); var app=express(); app.get("/",function(req,res,next){ const err=new Error('Not Found'); res.send("主页"); next(err); }); app.use("/user",function(err,req,res,next){ console.log("用户登录"); next(err); },function(req,res,next){ res.send("用户登录"); next(); }); app.use(function(req,res){ res.status(404).send("未找到指定页面"); }); app.listen(8080);
4.内置中间件
从版本4.x开始,Express不再依赖Content,也就是说Express以前的内置中间件作为单独模块,express.static是Express的唯一内置中间件。
express.static(root, [options]);
通过express.static我们可以指定要加载的静态资源。
5.第三方中间件
形如之前我们的body-parser,采用引入外部模块的方式来获得更多的应用操作。如后期的cookie和session。
var express = require('express'); var app = express(); var cookieParser = require('cookie-parser');
以上就是关于express中间件类型,在实际项目中,中间件都是必不可少的,因此熟悉使用各种中间件会加快项目的开发效率。
更多node相关知识,请访问:nodejs 教程!!
以上是聊聊nodejs中的get/post請求和中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器