Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Verwendung der Node.js-Routing-Middleware GE und Post-Anfragen geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung der Node.js-Routing-Middleware GE und Post-Anfragen? Das Folgende ist ein praktischer Fall. Schauen wir uns das an.
1. Routing
1. Was ist Routing?
Der Server muss je nach URL oder Anforderung unterschiedliche Vorgänge ausführen. Wir können diesen Schritt durch Routing erreichen
2. Methoden zur Implementierung des Routings
2.1. Was tun, wenn Anfragen zum Zugriff auf die URL eingehen
app.get("网址",function(req,res){ });
2.2. Was ist zu tun, wenn ein Beitrag den Zugriff auf eine Website-Adresse anfordert? 2.3. Jede Anfrage zum Besuch dieser Website
app.post("网址",function(req,res){ });
Hinweis: 1. Bei der URL wird die Groß-/Kleinschreibung nicht beachtet, zum Beispiel
app.all("网址",function(){ });
2. Wenn Sie nach /a weiterleiten, kann auch das eigentliche /a?id=2&sex =nan verarbeitet werden.
app.get("/AAb",function(req,res){ //我们访问 /aab也是可以的 res.send("你好"); });
regulären Ausdrücken
beim Routing3.2. Doppelpunktschrift (empfohlen)
app.get(/^\/student\/([\d]{10})$/,function(req,res){ res.send("学生信息,学号" + req.params[0]); });
2. Middleware
var express=require('express'); var app=express(); //冒号1 app.get("/student/:id",function (req,res) { var id=req.params["id"]; //得到id的值 var reg=/^[\d]{6}$/; if(reg.test(id)){ res.send(id); }else { res.send("请检查格式"); } }); //冒号2 app.get("/:username/:oid",function(req,res){ var username = req.params["username"]; //得到username的值 var oid = req.params["oid"]; //得到//oid的值 res.write(username); res.end(oid); }); app.listen(3000);
1. Was ist Middleware
? Die oben genannten Get- und Post-Anfragen werden beispielsweise als Verbindungsdienst zwischen Anwendungen eingesetzt und sind Middleware 2. Die Reihenfolge aller Routen (Middleware) im Express (sehr wichtig) 2.1, next()-Methode2.2. Sequenzkonflikt: Die folgenden beiden Routen scheinen keine Beziehung zu haben, aber tatsächlich stehen sie in Konflikt, weil admin als Benutzername und login als ID verwendet werden kann
var express=require("express"); var app=express(); app.get("/",function (req,res,next) { console.log(1); next(); //如果没有next参数,就只会conlose出来1,而不会是1,2 }); app.get("/",function (req,res) { console.log(2); }); app.listen(3000);
Vorgangsergebnisse: Wenn wir auf 172.0.0.1:3000/admin/login zugreifen, werden nur die Benutzerinformationen admin anstelle der Administratoranmeldung ausgegeben
var express=require("express"); var app=express(); app.get("/:username/:id",function(req,res){ console.log("1"); res.send("用户信息" + req.params.username); }); app.get("/admin/login",function(req,res){ console.log("2"); res.send("管理员登录"); }); app.listen(3000)
Laufergebnisse: Wenn wir auf 172.0.0.1:3000/admin/login zugreifen, ist die Ausgabe Administrator-Login statt Benutzerinformationen Admin
var express=require("express"); var app=express(); //具体的 app.get("/admin/login",function(req,res){ console.log("2"); res.send("管理员登录"); }); //抽象的 app.get("/:username/:id",function(req,res){ console.log("1"); res.send("用户信息" + req.params.username); }); app.listen(3000)
Daten abrufen
Bibliothek3. app.use()-Middleware: Im Gegensatz zu get und post stimmt die URL nicht genau überein. Es lässt sich aber mit kleinen Ordnern erweitern.
var express=require("express"); var app=express(); app.get("/:username/:id",function (req,res,next) { var username=req.params.username; //检索数据库,如果username 不存在,那么next() if(检索数据库){ console.log("1"); res.send("用户信息") }else{ next(); } }); app.get("/admin/login",function (req,res) { console.log("2"); res.send("管理员登录"); }); app.listen(3000)
3.2, get.use()
Datei lesenvar express=require("express"); var app=express(); //匹配所有网址 //法一 //当你不写路径的时候,实际上就相当于“/”,就是所有网址 // app.use(function (req,res,next) { // console.log(new Date()); // next(); //执行下面的 // }); //法二 app.use("/",function (req,res,next) { console.log(new Date()); next(); //执行下面的 }); //匹配/admin所有地址,例如/admin/ss/aa这个都行 app.use("/admin",function (req,res) { res.write(req.originalUrl+"\n"); // /admin/ss/aa res.write(req.path+"\n"); // /ss/aa res.write(req.baseUrl+"\n"); // /admin res.end("你好"); }); app.listen(3000);
var express=require("express"); var fs=require("fs"); var app=express(); //当你不写路径的时候,实际上就相当于“/”,就是所有网址 app.use(haha); //haha是一个函数 app.listen(3000); // function haha(req,res) { // res.send("哈哈"); // } app.use('/admin',function (req,res) { res.send('管理员登录'); }) //根据当前的网址,读取punlic文件夹的文件 //如果有这个文件,就渲染这个文件 //如果没有这个文件,那么next() function haha(req,res,next) { var filePath=req.originalUrl; //根据当前的网址,读取public文件夹的文件 //如果有这个文件,那么渲染这个文件 //如果没哟偶这个文件,那么next(); fs.readFile("./public/"+filePath,function (err,data) { if(err){ //文件不存在 next(); //一定要写,不然处于挂起状态 return; } res.send(data.toString()); }) }
4.2. Der von res.render() gerenderte Inhalt wird gemäß der Vorlagendatei in Ansichten gerendert. Wenn Sie den Ansichtenordner nicht verwenden und den Ordnernamen selbst festlegen möchten, dann app.set("views","aaaa"); 5. req.query: Bei Eingabe von http://127.0.0.1:3000/?id=0&ag=9
var express=require("express"); var app=express(); //静态服务 app.use('/jingtai',express.static("./public")); //新的路由 app.get('/images',function (req,res) { res.send("哈哈") }); //会自动识别err参数,如果有,那么就这个函数能捕获err app.use(function (req,res) { res.status(404).send("没有这个页面!"); }) app.listen(3000);
Laufergebnis:
var express=require("express"); var app=express(); // //设置ejs文件夹名字 //在day3文件夹下新建文件夹a,然后在里面放ejs文件 // app.set("views","a") app.set("view engine","ejs"); app.get("/",function(req,res) { res.render("haha",{news:[]}); }); app.get("/check",function (req,res) { res.send({ "user":"ok" }) }) app.listen(3000);
var express=require("express"); var app=express(); app.get("/",function (req,res) { console.log(req.query); res.send(); }); app.listen(3000);
3. Holen Sie sich
AnfrageparameterPost-Anfrageparameter:
Parameter der GET-Anfrage: In der URL ist in Express keine Notwendigkeit, das URL-Modul zu verwenden. Sie können das req.query-Objekt direkt verwenden. POST-Anfrageparameter: können nicht direkt in Express abgerufen werden, Sie müssen das Body-Parser-Modul verwenden. Nach der Verwendung können Sie req.body verwenden, um die Parameter abzurufen. Wenn das Formular jedoch Datei-Upload enthält, müssen Sie trotzdem das beeindruckende Modul verwenden.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website! Empfohlene Lektüre: Bootstrap-Modal-Box erscheint mehrmals. Fehler melden Wie vue-cli lib-flexible+rem mobile konfiguriert Terminaladaptiv
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der Routing-Middleware von node.js für Ge- und Post-Anfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!