快速上手Express,实现接口并与Mysql连接(一)

1,530 阅读4分钟

前言

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具!” 这是 node.js 官网的介绍, 可以说 node 是运行在服务端的 JavaScript。node 良好的异步性能以及高并发,可以适用于服务端的搭建以及爬虫。特别是作为一个前端技术人员, 如果你想要搭建自己的服务, node 是你最好的选择。随着时间的推移,现在 Node.js 构建了许多库,比如使用 Node.js 和 Koa 构建的企业级框架和应用程序的框架——Egg.js,以及简单但又强大的 Express

一、Express搭建

现在 express 有着成熟的技术,它也有自己的项目生成器,这里我们就只简单的搭建 express 服务, 就不使用生成器了。 我们先通过npm init -y 初始化一个项目, 然后再执行 npm install express, 一个初始的框架就已经搭成了。

我们在项目根目录下新建一个 index.js, 在里面添加如下代码:

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


//启动监听
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

这是一个最简单的 express 服务, 我们通过 node index.js 启动这个项目文件, 然后打开 localhost:8090, 会发现打开的页面是这个样子

image.png

这是因为现在只是启动了这个项目,但是页面并没有返回任何数据, 接下来再在里面添加一些代码

const express = require('express')
const app = express()
const port = 8089

//新增
app.get('/', function (req, res) {
  res.send('Hello World');
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

再运行 index.js,得到如下结果

image.png

到这里就需要再讲两个知识点了

二、Express基础知识

1、request 与 response对象

request 就是请求对象, response 是响应对象, 通常用 res 和 req 简写代替。req 里面有些比较常用的成员,我也列举出来了。

req.body(): 客户端返回的请求体

req.params()req.query():客户端的请求参数, 就是拿到前端界面的请求参数然后再进行处理

req.cookies():客户端 cookies

res 就是用来做响应操作, 例如: res.send('123')发送代码, res.sendFile()发送文件

关于 res 与 req 的更多API可以参考官网进行学习

2、路由

这里的路由及配置与我们前端的路由是一样的用法,我们通过这个路由就能访问到服务里的文件。 这里的用法就是app.get()app.post()app.put()app.delete(), 也就是最常见的增删改查, 平常的接口也是使用这些配合着数据库的操作。

app.get()

const express = require('express')
const app = express()
const port = 8089

app.get('/', function (req, res) {
  res.send('Hello World');
})

app.get('/index', function (req, res) {
  res.send('这里是index');
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

上述就是 app.get()使用方法, 运行后打开页面, 再进入index下面, 页面中就会出现刚刚配置的 res.send()

image.png

动态路由

平常查询的时候经常会碰到动态路由,这里的配置也是一样

app.get('/user/:id', (req, res) => {
  res.send(`getuser${req.params.id}`)
})

打开浏览器输入url, 比如: user/1, 在界面中就会出现对应的结果

image.png

以上就是关于 app.get()的一些用法,都非常的简单, 其他的 post、delete 等请求我们后面在操作数据的时候再讲解。

3、代理中间件

这里我们再讲一个 express 的代理, 平常前端开发可能需要的接口不只一个, 这样就会导致跨域问题, 这个时候我们在服务端就可以统一配置。接口的代理这里需要用到一个插件express-http-proxy,还有一个解决跨域的cors插件, npm 下载一下。插件都准备好了,接下来我们模仿环境。我们需要两个服务端, 一个客户端,这里就再新建一个 demo2.js,客户端我们就使用 postman 可视化操作。

demo2.js

const express = require('express')
const proxy = require('express-http-proxy')
const app = express()
const port = 8085
app.use(require('cors')())

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

const userServiceProxy = proxy(' http://localhost:8089', {
  //过滤器,指定类型的转发(可选)
  filter: function (req, res) {
    return req.method == 'GET';
  },
  //请求路径解析,转换一下路径(可选)
  proxyReqPathResolver: function (req) {
    console.log(req.url);
    let api = req.url
    return api;
  },
  //处理响应(可选)
  userResDecorator: function (proxyRes, proxyResData, userReq, userRes) {
    return proxyResData;
  }})

  // 代理请求
app.get('/index', (req, res, next) => {
  userServiceProxy(req, res, next)
})

app.get('/', (req, res) => {
  res.send('不走代理--主页')
})

这个 demo2.js 是代服务端1的代理代码, 我们配置了一个 userServiceProxy, 当用户访问这个 8085 端口的 index接口时, 会跳到之前的 8089 端口的页面, 我们运行两个服务端。

image.png 用户访问 8085 的端口, 会显示 8089 页面的内容, 代理成功。

总结

这一节我们讲述了 express 的简单应用, 主要是对路由的使用, 以及它的一个代理功能,下一节我们再讲如何通过 express 连接 mysql, 以及在服务端进行数据库的增删改查。