Node.js - 使用 express 创建 API 接口

724 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第11天,点击查看活动详情

创建基本的服务器

// 导入 express 模块
const express = require('express')

// 创建 express 的服务器实例
const app = express()

// 调用 app.listen 方法,指定端口号开启 web 服务器
app.listen(80, ()=> {
    console.log('express 服务器运行在 http://127.0.0.1.80')
})

创建 API 路由模块

  • 创建路由模块

    const express = require('express')
    
    const router = express.Router()
    
    // 导出路由
    module.exports = router
    
  • 调用路由模块

    // 导入 express 模块
    const express = require('express')
    // 创建 express 的服务器实例
    const app = express()
    
    // 导入路由模块
    const router = require('./apiRouter')
    // 在 app 上注册路由模块
    app.use('/api', router)
    
    // 调用 app.listen 方法,指定端口号开启 web 服务器
    app.listen(80, ()=> {
        console.log('express 服务器运行在 http://127.0.0.1.80')
    })
    

编写 GET 接口

在路由模块添加 GET 请求,只需要更新路由模块

const express = require('express')
const router = express.Router()

router.get('/get', (req, res) => {
    // 1、获取到客户端通过查询字符串,发送到服务器的数据
    const query = req.query
    
    // 2、调用 res.send() 方法,把数据响应给客户端
    res.send({
        //状态 0表示成功,1表示失败
        status:0,
        //状态描述
        msg:'GET 请求',
        //需要响应给客户端的具体数据
        data:query
    })
})

module.exports = router

编写 POST 接口

在路由模块添加 POST 请求,如果要获取 URL-encoded 格式的请求体数据,必须配置中间件 express.urlencoded({extended: false}),不然就拿不到请求体中的数据

  • 路由模块

    const express = require('express')
    const router = express.Router()
    
    router.post('/post', (req, res) =>{
    
        // 1、通过 req.body 获取请求体中包含的 URL-encoded 格式的数据
        const body = req.body
        // 2、调用 res.send() 方法,把数据响应给客户端
        res.send({
            //状态 0表示成功,1表示失败
            status:0,
            //状态描述
            msg:'POST 请求',
            //需要响应给客户端的具体数据
            data:body
        })
    })
    
    module.exports = router
    
  • 调用路由模块(需要配置解析表单数据的中间件)

    // 导入 express 模块
    const express = require('express')
    // 创建 express 的服务器实例
    const app = express()
    
    //配置解析表单数据的中间件
    app.use(express.urlencoded({extended: false}))
    
    // 导入路由模块
    const router = require('./apiRouter')
    // 在 app 上注册路由模块
    app.use('/api', router)
    
    // 调用 app.listen 方法,指定端口号开启 web 服务器
    app.listen(80, ()=> {
        console.log('express 服务器运行在 http://127.0.0.1.80')
    })