3.1 express的使用 特点:二次封装 非侵入式 增强型

1 安装npm 安装Postman
2 (先到一个新的文件夹)命令行 npm init 创建项目 npm init -y就是直接创建
3 命令行 npm i express -S 安装express
4:新建app.js =>

let express = require('express');//引入模块 这个express是类 对象 函数

let server = express();//=http.createserver(()=>{})

server.listen(3000,()=>{
console.log("3000端口监听中");
})

这里服务器就搭好了 可以使用nodemon或node 来启动
为了更加方便启动可以在这个目录下的package.json=>"scripts": { "start": "nodemon app" },
这样可以直接npm start就可以开启服务端了

5 启动成功就可以打开网页看看 Cannot GET /
6 静态资源托管 当前目录新建public文件夹,里面放个Index.html(默认主页) app.js文件中添加下面代码

server.use(express.static('./public'));//静态资源托管好了

再打开网站 localhost:3000 就会到首页

7 接口响应 app.js +

server.get('/api/home',(req,res)=>{
    console.log('接受接口home的请求');
    res.end();
})
server.post('/api/login',(req,res)=>{
    console.log('接受接口login的请求');
    res.end();
})
server.delete('/api/logout',(req,res)=>{
    console.log('接受接口logout的请求');
    res.end();
})

用Postman就可以测试了
用postman
8 当然接口中的req和res也能用啦!来进行接受和响应接口

req.query是express给req的新属性 可以直接获取地址栏数据的对象

req.query:地址栏数据

req.method:提交方式

req.params:接口名

动态接口名有数据的前提是请求方式是这样的:

server.get('/api/goods/:id/t-shirt/:size',(req,res)=>{//:id和:size就是动态接口啦,多个动态接口时params是一个对象
    console.log("获取动态接口名",req.params);
    res.end();
})

req.body:非地址栏数据

使用这个方法需要用Npm下载body-parser 并引入
命令行 npm i body-parser -S
app.js=>

let bodyParser = require('body-parser');
server.use(bodyParser({}))

就可以用req.body了

res.send()返回任何类型的数据到浏览器

res.send()方法相当于 强化版的 res.write()加上 res.end()
写了这个就不用写res.end()了奥

res.JSON()json数据到浏览器

res.sendFile(一段磁盘地址)返回一个静态页面

使用这个模块需要引入path模块
app.js=>

let path = require('path');

在文件夹public中创建一个404页面 404.html
然后添加一个接口app.js,=>

server.get('/*',(req,res)=>{
    res.sendFile(path.resolve("./public/404.html"))
})

res.redirect()接口跳转

如果想在老接口跳转新接口
app.js+>

server.get('/api/old',(req,res)=>{
    res.redirect('/api/new');
    res.end();
    console.log('old');
})
server.get('/api/new',(req,res)=>{
    res.send(req.url);
    console.log('new');
})

老接口的代码依旧会执行,注意清空

如果请求是一个jsonp请求 使用server.get()接受,再用jsonp(回调数据),就可以用了()我不会不多说

9 server.all()接口群体处理

app.js +=

server.all('/api/*',(req,res,next)=>{
    console.log('总接口响应,不next你们api都进不来');
    next()
})

记得把他放在你想要管理的接口server前面奥

10 server.use()安装中间件 路由 可以截获所有的请求方式!

上面的req.body需要的server.use(bodyParser)就是在在安装中间件
server.use也可以当server.all使用 使用方法和server.all一样 也是需要next()的奥

总代码

let express = require('express');//引入模块 这个express是类 对象 函数
let bodyParser = require('body-parser');
let path = require('path');
let server = express();//=http.createserver(()=>{})

server.listen(3000,()=>{
console.log("3000端口监听中");
})

server.use(express.static('./public'));//静态资源托管好了
server.use(bodyParser({}))
//接口响应

server.get('/api/home',(req,res)=>{
    console.log('地址栏数据',req.query);//req.query可以直接显示传过来的地址栏数据啦 数据是对象 { ab: 'qqq' }
    //是不是和url模块的功能很像,没错express就是这些模块的封装
    console.log('非地址栏数据',req.body);
    console.log('动态端口名',req.params);
    console.log('请求提交方式',req.method);
    res.end();
})
server.post('/api/login',(req,res)=>{
    console.log('接受接口login的请求');
    res.end();
})
server.delete('/api/logout',(req,res)=>{
    console.log('接受接口logout的请求');
    res.end();
})
server.get('/api/goods/:id/t-shirt/:size',(req,res)=>{//:id和:size就是动态接口啦,多个动态接口时params是一个对象
    console.log("获取动态接口名",req.params);
    res.send(req.params);
   
})

server.all('/api/*',(req,res,next)=>{
    console.log('总接口响应,不next你们api都进不来');
    next()
})
server.get('/api/old',(req,res)=>{
    res.redirect('/api/new');
    res.end();
console.log('old');
})
server.get('/api/new',(req,res)=>{
    res.send(req.url);
    console.log('new');
})

server.get('/*',(req,res)=>{
    res.sendFile(path.resolve("./public/404.html"))
})


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值