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就可以测试了
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"))
})