在express中给router设置不同的请求接口实现restful规范
express实现后端渲染
- app.js配置router
- router通过api传数据给ejs渲染模板
- ejs实现静态和动态的页面渲染
router通过api传数据
前端请求方式
- get
- post
- put
- delete
- head
- all
以上的请求方式统称为: restful api
通过restful api 来设计后端接口
http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html
测试接口是否正常,我们可以使用测试工具:postman insomnia
接口暴露
api接口暴露的方式有两种:
- 第一种: 使用模板进行暴露,但是要将数据做字符串转换,然后使用ejs的非转义输出
router.get('/',function( req,res,next ) {
res.render('mine', {
mine: JSON.stringify({
ret: true,
username: 'express',
password: 123
})
})
})
- 第二种: 使用json()
router.get('/',function( req,res,next ) {
res.json({
ret: true,
username: 'express',
password: 123
})
})
get(查)
router.get('/', (req, res, next) => {
let { username, password } = req.query
res.render('apiPort', {
username,
password
})
})
//get接口测试的参数在Params中设置
//通过req中的query接收请求的数据
// <%-password%>//ejs语法注释无效
post(改)
router.post('/', (req, res, next) => {
// res.json(req.body)
let { username, password } = req.body
res.render('apiPort', {
posts: {
ret: true,
username,
password
}
})
})
//post接口测试的参数在body中设置
//对象直接渲染: <%-posts%> => [object,object]
//对象的属性渲染 : 能输出对象属性的值
//把对象JSON.stringify()成字符串可输出其内容
put(增)
router.put('/', function(req, res, next) {
res.render('apiPort', {
mine: JSON.stringify(req.body)
})
})
//put接口测试的参数在body中的raw中设置
//(使用json类型,不然用req.body获取时内容全在属性中){ 'ret: true, text: \'增加减少\'': '' },
//内容格式:{"ret":true,"name":"express"}(改)
//后端获取请求的参数用req.body
delete(删)
router.delete('/', function(req, res, next) {
res.render('apiPort', {
mine: JSON.stringify({
ret: true,
text: '删除'
})
})
})
all
- 可以接收所有的请求类型,但是不能用于上线项目
router.all('/', function(req, res, next) {
res.render('apiPort', {
mine: JSON.stringify({
ret: true,
text: 'all'
})
})
})