用express搭建 静态托管服务器及简易接口

1,837 阅读4分钟

Express框架

快速搭建简易服务器

1.创建项目并初始化

创建一个文件夹,作为我们的项目文件夹(不要起中文名),之后在此目录下启动终端,运行 npm i -y 初始化项目 生成package.json文件

2.下载 express 包

命令 : npm i express

3.快速创建服务器代码

// 0. 加载 Express
const express = require('express')
​
// 1. 调用 express() 得到一个 app
//    类似于 http.createServer()
const app = express()
​
// 2. 设置请求对应的处理函数
//    当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
  res.send('hello world')
})
​
// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))
​

说明:

  • app.get('/')相当于添加事件监听:当用户以get方式求"/"时,它后面的回调函数会执行,其回调函数中的req,res与前面所学http模块保持一致。
  • res.send()是exprss框架给res对象补充提供的方法(http模块中的res是没有这个方法的),用于结束本次请求。类似的还有res.json(), res.sendFile() 。
  • express 框架会增强req,res的功能

托管静态资源-web服务器

目录结构:

image.png

 // 导入 express
 const express = require('express')
// 得到一个app对象, 启动服务
 const app = express()
// 设置中间件,处理请求对应函数,静态托管
 app.use(express.static('publish'))
​
 app.listen(3006,()=>{
   console.log('访问成功,请到  http://localhost:3006')
 })
 // 在本地 http://localhost:3000 即可看到托管的静页面

扩展:

限制前缀

// 限制访问前缀
app.use('/public', express.static('public'))

这意味着想要访问public下的内容,必须要在请求url中加上/public

路由和接口

路由(Routing)是由一个 URL(或者叫路径标识)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何处理响应客户端请求。每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这些个函数将被执行。

用express搭建简易接口

1.准备工作,先下载express包=> npm i express

2.编写完代码后(逻辑代码见下),执行 node 文件名.js 启动服务器

3.测试接口是否成功, get接口直接用浏览器打开或postman等测试软件,其他类型,都需要借助第三方工具

1.get接口

express框架会自动收集get类型的接口从url地址中传递的查询字符串参数,并自动保存在req对象的query属性中。我们直接来获取即可。

const express = require('express');
const app = express();
app.get('/get', function(req, res) {
  // 获取到用户传递过来的查询字符串参数
  console.log(req.query);
  // 响应的数据 
  res.send({ name: 'abc' });
});
app.listen('8088', () => {
  console.log('8088');
});
// 访问自己的  http://localhost:8088查看结果
或postman等测试软件看是否成功

2.post接口(普通键值对)

const express = require('express');
const app = express();
// 1. 使用中间件
app.use(express.urlencoded());
​
app.post("/add",function(req,res){
// 2. 可以通过req.body来获取post传递的键值对 
    console.log(req.body);
    res.send({ name: 'abc' });
})
app.listen('8088', () => {
  console.log('8088');
});
// 用postman等测试软件测试结果

3.post接口(json格式的参数)

在post传递参数时,如果要传入的参数比较复杂(多级嵌套),则可以使用json格式上传,如你要上传的参数:

let data = {
 name:"abc",
 address:{
     "a":1,
     "b":2,
     "info":"c"
 }
}

后端代码:

const express = require('express');
const app = express();
// 1. 使用中间件
app.use(express.json());
// 会自动加入req.body属性,这个属性中就包含了post请求所传入的参数// 用来处理JSON格式的数据
app.post('/postJSON',(req,res)=>{
    // 后端收到post传参
    console.log(req.body);
    res.send({ name: 'abc' });
})
app.listen('8088', () => {
  console.log('8088');
});

4.post接口(form-data文件上传)

如果post涉及文件上传操作,则需要在服务器端额外使用第三方multer这个包(不属于express)来获取上传的信息。

Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。

1.安装包

npm install multer

2.代码

const express = require('express');
const app = express();
​
// 1. 引入包
const multer = require('multer');
// 2. 配置
const upload = multer({dest:'uploads/'}) // 上传的文件会保存在这个目录下
// uploads表示一个目录名,你也可以设置成其它的// 3. 使用
// 这个路由使用第二个参数 .upload.single表示单文件上传, 'cover' 表示要上传的文件在本次上次数据中的键名。对应于前端页面上的:
​
app.post("/postfile",upload.single('cover'), (req,res)=>{
    // req.file 记录了文件上传的信息
    // req.body 记录了其它普通参数(非文件)的信息
      // 其它操作
      res.send({ name: 'abc' });
})

注意:

  • 如果当前目录下没有uploads,它会自动创建uploads这个文件夹
  • upload.single只是处理了文件的上传。你仍可以通过req.body来获取其它参数