学习笔记--Express模块

Express中的三个核心概念:(1)路由(2)中间件(3)模板引擎

www.expressjs.com  路由+中间件

express是基于nodejs的http模块而编写的高级模块,简化web服务端的应用开发

V4中定义:Express是请求处理工具,用于接收请求消息并返回响应消息。


HTTP知识点:

请求方法:用于表明客户端的请求目的。

GET(想获取指定资源),POST(想上传添加数据给服务器,数据在请求主体中),PUT(想上传跟新服务器上的数据,数据在请求主体中),DELETE(想删除服务器上的指定的资源)

POST,PUT区别:多次请求,POST影响多行,PUT只影响一行。多次PUT请求是“幂等的“


Express使用方法:

下载:npm i express

引入自己的模块:const express = require('express');

创建web服务器对象:

var app= express();

var server = require('http').createServer(app);

server.listen(8080);


使用express处理GET请求函数:

//一个路由

app.get(url,(req,res)=>{

  res.send('hello world');//等价write 和end

});

app.post(url,(req,res)=>{});
 app.put(
(url,(req,res)=>{}); 
app.delete(
(url,(req,res)=>{});

/**
 * 使用http模块创建web服务器,监听8080端口
 * express作为请求工具
 */
const http = require('http');
const express = require('express');
//console.log(express);
var app = express();//express是一个请求处理函数
var server = http.createServer(app);
server.listen(8080);

app.get('/index',(req,res)=>{
    res.send('<h1>This is the 主页</h1>');
});
app.get('/Login',(req,res)=>{
    res.sendFile(__dirname+'/public/login.html');//sendfile=readfile + setHeader + write + end
});
sendFile必须是绝对路径,可以使用__diename或者__filename解决。

server端接收客户端的请求:

(1) 客户端发送:http://127.0.0.1/user?uid

req对象中的query参数可以直接获得请求的参数。

app.get('/user',(req,res)=>{
    console.log(req.query.uid);
});

(2) 客户端发送:127.0.0.1:8080/88/java

//接收请求地址中的请求参数(params)
//给变量取名,例如::bid第一个参数变量,:btype第二个参数变量
app.get('/book/:bid/:btype',(req,res)=>{
    console.log(req.params.bid);//88
    console.log(req.params.btype);//java
    res.send(req.params.bid +","+req.params.btype);
})

联合使用http,express,mysql实现web动态请求:

客户端发送请求:http://127.0.0.1:080/stu/4

const mysql = require('mysql');
const http = require('http');
const express = require('express');

var pool = mysql.createPool({
    user:'root',
    database:'bbs',
    connectionLimit:10
});

var app = express();
http.createServer(app).listen(8080);

app.get('/stu/:uid',(req,res)=>{
    var uid = req.params.uid;
    pool.getConnection((err,conn)=>{
        conn.query('SELECT * FROM t_user WHERE uid=?',[uid],(err,result)=>{
            var stu = result[0];
            //var str = JSON.stringify(stu);
            //res.send(str);
            res.json(stu);//json方法把指定对象转换为JSON字符串,并输出JSON内容到客户端=JSON.stringify + write+setHeader
            conn.release();
        });
    });
});


中间件:

const http = require('http');
const express = require('express');

var app = express();
http.createServer(app).listen(8080);

//use方法即中间件:拦截全部请求
app.use((req,res,next)=>{
    next();//访问下一个中间件或路由并放行请求.作用
});

app.use('/index',(req,res,next)=>{
    next();
});
app.get('/index',(req,res,next)=>{
    res.sendFile(__dirname+'/public/index.html');
    next();//继续访问下一个中间件或路由,没有next()则不会访问下一个中间件。
});



app.get('/index.css',(req,res)=>{
    res.sendFile(__dirname+'/public/index.css');
});
app.get('/index.js',(req,res)=>{
    res.sendFile(__dirname+'/public/index.js');
});

直接访问server上的静态页面:

app.use(express.static('public'));//127.0.0.1:8080/index.css直接就可以访问,不用再设置路由和路径


猜你喜欢

转载自blog.csdn.net/u012183426/article/details/79533519