Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung der Routing-Middleware von node.js für Ge- und Post-Anfragen

Detaillierte Erläuterung der Verwendung der Routing-Middleware von node.js für Ge- und Post-Anfragen

php中世界最好的语言
php中世界最好的语言Original
2018-04-13 14:38:481547Durchsuche

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("你好");
 });
 3. Verwendung von

regulären Ausdrücken

beim Routing

     3.1 In regulären Ausdrücken werden die unbekannten Teile in Klammern gruppiert und können mit req.params[0], [1] ermittelt werden. req.params-Array-Objekt. 

     3.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()-Methode      

      2.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)
  2.3. Sequenzkonflikte lösen

      2.3.1 Schreiben Sie die konkreten nach oben und die abstrakten nach unten.        

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)
    2.3.2,

Daten abrufen

Bibliothek

  3. 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.1. Fuzzy-Matching von get.use()

  3.2, get.use()

Datei lesen
var 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);

  4. Rendern und senden

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.1, Schnelltestseite für die Methode res.send()

     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

Anfrageparameter

Post-Anfrageparameter: Detaillierte Erläuterung der Verwendung der Routing-Middleware von node.js für Ge- und Post-Anfragen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn