通过express实现restfulapi

宇文和昶
2023-12-01

在express中给router设置不同的请求接口实现restful规范

express实现后端渲染

  • app.js配置router
  • router通过api传数据给ejs渲染模板
  • ejs实现静态和动态的页面渲染

router通过api传数据

前端请求方式

  1. get
  2. post
  3. put
  4. delete
  5. head
  6. 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'
        })
    })
}) 


 类似资料: