이 글은 node.js의 핫 리스타트, 요청 받기, 게시 요청 및 미들웨어에 대해 설명합니다.
1.
npm i nodemon
2을 실행하고 시작합니다.
nodemon.
http://localhost:8080/login?goods1=0001&goods2=0002
http://localhost:8080/login?goods1=0001&goods2=0002응답은 다음과 같습니다.
req.query그는 모든 데이터를 얻습니다. 또는
req.query.goods1 req.query.goods2혼자 또는 모든 데이터로 이동합니다. 간단히 말해서, 서로 다른 요구 사항은 서로 다른 비즈니스에 해당하며 모든 사람이 자신의 요구 사항에 따라 이를 얻을 수 있습니다.
<!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);
형식으로 게시물 요청을 작성하는 방법을 다음과 같이 알아야 합니다. enctype
属性一般设置为“application/x-www-form-urlencoded
”,如果设置成multipart/form-data
<form action="#" method="post" enctype="application/x-www-form-urlencoded"> </form>2. 구문 분석 본문 미들웨어 설정
app.use(express.urlencoded())3 .본문 데이터 가져오기
req.body.username
<!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>APP.JS
var 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;
2. Express가 요청을 수락합니다
중간 처리 과정
3. 라우팅 기능이 렌더링(req, res)을 처리합니다
4.res.render 렌더링
함수는 다음 작업을 수행할 수 있습니다:
모든 코드를 실행합니다. 요청 및 응답 개체를 변경하세요.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);이때
주소가 로드 중이지만 명령줄에 "액세스 전"이 표시되어 프로그램이 로드되지 않음을 나타냅니다. 다음을 사용하면 경로가 아래쪽으로 계속 일치하면 홈페이지 데이터를 다시 얻을 수 있습니다:
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);
따라서 이전에 뭔가를 하고 싶습니다. 경로 일치를 수행하거나 다시 녹음하고 아래쪽으로 계속 실행할 때 응용 프로그램 계층 미들웨어는 의심할 여지 없이 좋은 선택입니다.
路由级中间件和应用级中间件类似,只不过他需要绑定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 教程!!
위 내용은 nodejs의 get/post 요청과 미들웨어에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!