Dieser Artikel führt Sie durch den Hot-Restart, das Abrufen von Anfragen, das Posten von Anfragen und die Middleware in node.js. Ich hoffe, er wird Ihnen hilfreich sein!
npm i nodemon
2. Führen Sie
nodemon .bin/www aus
2 get-Anfrage
Holen Sie sich die Front-End-Get-Anfrage
Die Antwort erfolgt durch:
Er erhält alle Daten oderreq.queryNach dem Login kopieren
req.query.goods1 req.query.goods2
allein Oder gehen Sie zu allen Daten. Kurz gesagt, unterschiedliche Anforderungen entsprechen unterschiedlichen Unternehmen, und jeder kann sie entsprechend seinen eigenen Anforderungen erhalten
node:rrree
3. Über die POST-Anfrage: Die Post-Methode ist ein wichtiger Teil der http-Anfrage. Im Gegensatz zu get ähnelt die Post-Anfrage eher der Durchführung von Änderungsvorgängen auf dem Server wird im Allgemeinen für Datenressourcenaktualisierungen verwendet. Im Vergleich zu Get-Anfragen sind die per Post angeforderten Daten sicherer. Im vorherigen Kapitel haben wir festgestellt, dass bei der Get-Anfrage der eingegebene Benutzername und das eingegebene Passwort in der Adressleiste angezeigt werden (bei Chinesisch werden sie in BASE64-Verschlüsselung konvertiert), während bei der Post-Anfrage die Daten in den Hauptteil der Adresse eingefügt werden http-Paket, das es anderen unmöglich macht, Benutzernamen und Passwort direkt zu sehen!
1 Zunächst müssen wir wissen, wie Sie eine Post-Anfrage im Formular
stellen, das hauptsächlich zum Hochladen von Dateien verwendet wird:<!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>
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);
<form action="#" method="post" enctype="application/x-www-form-urlencoded"> </form>
enctype
属性一般设置为“application/x-www-form-urlencoded
”,如果设置成multipart/form-data
Der Prozess der Zwischenverarbeitung
3. Die Routing-Funktion übernimmt das Rendering (req, res)
Die Middleware Die Funktion kann die folgende Aufgabe ausführen:
Die Middleware auf Anwendungsebene wird mithilfe von app.use und app.METHOD() an das App-Objekt gebunden – Methoden, die HTTP-Anfragen verarbeiten müssen, z B. GET, PUT, POST, ersetzen Sie einfach das vorherige get oder post durch use. Zum Beispiel das folgende Beispiel:
app.use(express.urlencoded())
Zu diesem Zeitpunkt werden wir feststellen, dass die Adresse
http://localhost:8080/geladen wurde, in der Befehlszeile jedoch „Vor dem Zugriff“ angezeigt wird, was darauf hinweist, dass das Programm dies nicht tun wird synchron ausgeführt werden. Wenn die Route weiterhin nach unten übereinstimmt, können Sie die Homepage-Daten erneut abrufen:
req.body.username
Natürlich können Sie das Schreiben auch vereinfachen:
<!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>登陆</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>
路由级中间件和应用级中间件类似,只不过他需要绑定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);
总之在检测用户登录和引导用户应该访问哪个页面是,路由中间件绝对好用。
顾名思义,它是指当我们匹配不到路由时所执行的操作。错误处理中间件和其他中间件基本一样,只不过其需要开发者提供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.x开始,Express不再依赖Content,也就是说Express以前的内置中间件作为单独模块,express.static是Express的唯一内置中间件。
express.static(root, [options]);
通过express.static我们可以指定要加载的静态资源。
形如之前我们的body-parser,采用引入外部模块的方式来获得更多的应用操作。如后期的cookie和session。
var express = require('express'); var app = express(); var cookieParser = require('cookie-parser');
以上就是关于express中间件类型,在实际项目中,中间件都是必不可少的,因此熟悉使用各种中间件会加快项目的开发效率。
更多node相关知识,请访问:nodejs 教程!!
Das obige ist der detaillierte Inhalt vonLassen Sie uns über Get/Post-Anfragen und Middleware in NodeJS sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!