• express快速入门【含源码压缩包下载】


    快速搭建express基本服务

    const express = require('express')
    const path = require('path')
    const app = express()
    const cors = require('cors')
    
    // 解决跨域问题
    app.use(cors())
    // 用来解析请求体中application/json数据
    app.use(express.json())
    // 用来解析请求体中application/x-www-form-urlencode
    app.use(express.urlencoded({ extended: false }))
    // 静态资源服务器,浏览器地址栏输入http://localhost:4000试一试吧,源文件在项目目录下的server文件夹里
    app.use(express.static(path.join(__dirname, '/server')))
    
    // 演示GET请求
    app.get('/shop/list', (req, res) => {
        const shopList = [{
            id: '001',
            shopName: 'JavaScript权威指南'
        }, {
            id: '002',
            shopName: 'JavaScript权威指南'
        }]
        // res.json()里面接受一个json格式的数据,此数据返回给前端
        res.json({
            code: 200,
            msg: '获取商品列表成功!',
            data: shopList,
            // 获取前端传递的url参数
            query: req.query
        })
    })
    
    // 演示POST请求,:id是pramas路由传参风格
    app.post('/submit/:id', (req, res) => {
        // 获取前端传递的url参数、请求体body参数、path传参的params参数
        const { query, body, params } = req
        res.json({
            code: 200,
            msg: '接受到的参数body、query、params',
            body,
            query,
            params
        })
    })
    
    // 演示服务器内部错误
    app.get('/error', (req, res) => {
        const shopList = [{
            id: '001',
            shopName: 'JavaScript权威指南'
        }]
        res.json({
            code: 200,
            msg: '我是错误的JS代码',
            // 这样必会报错,该错误会被下面app.use(function(err,req,res,next))这个中间件捕获到
            data: shopList[1].id,
        })
    })
    
    // 获取服务器内部错误的中间件
    app.use(function (err, req, res, next) {
        const response = {
            code: 500,
            errmsg: '报错信息',
            detail: '服务器内部错误'
        }
        if (err) {
            response.errmsg = err.message
        }
        // res.status是返回状态码的意思
        res.status(500).json(response)
    })
    
    // 服务器监听
    app.listen(4000, () => {
        console.log('express服务启动!端口4000')
    })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79

    客户端验收:

    <script>
        // 验证GET请求
        fetch('http://localhost:4000/shop/list?a=1', {
            method: 'GET',
        }).then(res=>res.json()).then(data=>{
            console.log(data);
        })
        // 验证服务端500错误
        fetch('http://localhost:4000/error', {
            method: 'GET',
        }).then(res=>res.json()).then(data=>{
            console.log(data);
        })
        // 验证POST请求
        fetch('http://localhost:4000/submit/express?name=1', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: {
                a:1
            }
        });
    script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    注意:fetch是HTML原生支持的ajax发送工具,不需要安装,是全局对象。很多人喜欢用第三方库axios但是其实fetch也是很牛的。

    源码下载地址:下载源码
    https://chengqige.com/express/express-start.zip

    如何运行:解压即可运行!

    运行方式:项目根目录打开终端,敲入npm start后回车

  • 相关阅读:
    2021 Adversarial Attack(李宏毅
    每次审查 OKR时,团队要讨论的12个启发性问题
    风力涡轮机损伤检测图像数据集(400多张图像,VOC标签)
    前端必会vue面试题
    数字世界的探索者:计算机相关专业电影精选推荐
    太速科技-多路PCIe的阵列计算全国产化服务器
    2023 百度之星(夏日漫步 + 跑步问题)
    Spring Cloud Gateway官方文档学习
    成为数据分析师要具备什么能力——功法篇(上)
    图像处理ASIC设计方法 笔记27 红外非均匀校正的两点定标校正算法
  • 原文地址:https://blog.csdn.net/chengqige/article/details/126564749