基于node.js的Express框架介绍(前端同学写接口,让后端同学没接口可写)

Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时,它提供了许多基础的功能和 API,而基于 Node.js,程序员实现了很多强大的工具和框架。总之,Node.js 是大前端时代的“大宝剑”,有了 Node.js 这个超级 buff 的加持,前端程序员的行业竞争力会越来越强!

  • 后端API接口。基于Node.js环境 + Express框架

  • 桌面应用。基于Node.js环境 + Electron 框架

  • 操作数据库。基于Node.js环境 + MySql包 读写和操作数据库

  • 实用的命令行工具。基于Node.js环境,实现的 vuecli,webpack等

  • etc...

Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架

  • web 开发: 对不同的请求能够显示页面;提供接口服务;

  • 框架是一个半成品,用来快速解决一类问题;框架:bootstrap, lay-ui, express, vue;

  • 库就是工具集,通过调用api来完成具体的功能。 库:zepto.js , jQuery, day.js, , react ,underscore, lodash, art-template, axios, echart.....

运行express程序

expresss 是一个第三方模块(在npm上可以下载),在使用它之前要先去下载它,在下载包之前要先创建项目,并通过终端命令npm init 创建package.json文件(终端命令的使用可参考本人之前的文章)。  

注意:

  • 项目目录名字不要取中文,也不要取express

  • 如果安装不成功:

    • 换个网络环境

    • 运行下npm cache clean -f,再重新运行下载命令试试

基本使用

// 加载 Express
const express = require('express')

// 1. 调用 express() 得到一个 app
//app是 express 实例
//    类似于 http.createServer()
const app = express();

// 2. 静态资源托管
app.use(express.static('public'))

// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))

路由和接口 

路由(Routing)是一组映射关系。它约定了当一个特定的 HTTP 方法(GET、POST 等)访问某个 URL(或者叫路径标识)时,服务器如何响应,而接口就是一种特殊的路由。

  • 写get接口
  • 要求
    //---- 不传入id -------------
    //  localhost:8080/api/getbooks
    {
          "status": 0, //0标识成功,其他失败
          "message": "获取图书列表数据成功", //描述信息
          "data": [{ //返回数据
            "id": 1, //图书id
            "bookname": "西游记", //书名
            "author": "吴承恩", //作者
            "publisher": "北京出版社" //出版社
            },
            {
            "id": 2, //图书id
            "bookname": "红楼梦", //书名
            "author": "曹雪芹", //作者
            "publisher": "大清出版社" //出版社
          }] 
    }
    
    //---- 传入id -------------
    //  localhost:8080/api/getbooks?id=1
    {
          "status": 0, //0标识成功,其他失败
          "message": "获取图书数据成功", //描述信息
          "data": { //返回数据
            "id": 1, //图书id
            "bookname": "西游记", //书名
            "author": "吴承恩", //作者
            "publisher": "北京出版社" //出版社
          }
    }
    
    //  localhost:8080/api/getbooks?id=100
    {
          "status": 1, //0标识成功,其他失败
          "message": "获取图书数据失败"
    }

     参考代码

    const express = require('express')
    const app = express()
    let data = {
      "status": 0, //0标识成功,其他失败
      "message": "获取图书列表数据成功", //描述信息
      "data": [{ //返回数据
        "id": 1, //图书id
        "bookname": "西游记", //书名
        "author": "吴承恩", //作者
        "publisher": "北京出版社" //出版社
      },
      {
        "id": 2, //图书id
        "bookname": "红楼梦", //书名
        "author": "曹雪芹", //作者
        "publisher": "大清出版社" //出版社
      }]
    }
    let books = [{ //返回数据
      "id": 1, //图书id
      "bookname": "西游记", //书名
      "author": "吴承恩", //作者
      "publisher": "北京出版社" //出版社
    },
    {
      "id": 2, //图书id
      "bookname": "红楼梦", //书名
      "author": "曹雪芹",//作者
      "publisher": "大清出版社" //出版社
    }]
    // 定义路由
    // app.METHOD(PATH, HANDLER)
    app.get('/api/getbooks', (req, res) => {
      //console.log(req.query);//获取参数
      if (req.query.id !== undefined) {//如果可以获取到id
        // 做查询(数组里的find方法,查找首次满足条件的值,并返回值)
        const ret = books.find(item => item.id == req.query.id)
        if (ret) {
          res.json({
            "status": 0, //0标识成功,其他失败
            "message": "获取图书数据成功", //描述信息
            "data": ret
          })
        } else {
          res.json({
            "status": 1, //0标识成功,其他失败
            "message": "获取图书数据失败"
          })
        }
      } else {//如果获取不到id
        // 返回数据,send也行
        res.json(data)
      }
    })
    

    post代码见下一篇

上一篇:express+socket.io实现客户端与服务端之前的通信


下一篇:Express 表达式目录树详解