express前端的接口利器

一.什么是express

express是个基于Node.js平台的web开发框架,是个第三方模块

二.如何使用express

1.下载安装express

//在你的项目根目录下,打开小黑窗

//1. 初始化 package.json 文件
npm init -y

//2. 本地安装 express 到项目中
npm install express

2.简单创建一个服务器

//导入 Express
const express = require('express')

//调用 express() 得到一个 app
//类似于 http.createServer()
const app = express()

//设置请求对应的处理函数
//当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
  res.send('hello world')
})

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

3.托管静态资源

// 将需要托管的文件放在public文件夹中
// 加载 Express
const express = require('express')

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

// 静态资源托管public中的文件
app.use(express.static('public'))


// 监听端口号,启动服务
app.listen(3000, () => console.log('3000端口就绪'))
// 此时所有public下的内容就可以直接访问了

4.路由与接口

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

const express = require('express')
const app = express()//实例化
app.METHOD(PATH, HANDLER)//请求方式('路径',执行函数) 请求方式比如get post 

三.写接口

1.get方式

app.get('/get', function(req, res) {
  // 直接返回对象,res.query可以自动收集查询字符串中的信息
  console.log(req.query);
});
//res.query是express框架额外提供的属性

req.query属性可以收集get方式从url中传递的查询字符串

2.用写一个get方式传参的接口

//导入express
const express = require("express");
const app = express();
//图书信息
data = [
  {
    //返回数据
    id: 1, //图书id
    bookname: "西游记", //书名
    author: "吴承恩", //作者
    publisher: "北京出版社", //出版社
  },
  {
    id: 2, //图书id
    bookname: "红楼梦", //书名
    author: "曹雪芹", //作者
    publisher: "大清出版社", //出版社
  },
];
//创建服务
app.get("/api/getbooks", (req, res) => {
  //利用id是否为undefined判断是否传参
  let { id } = req.query;
  console.log(data.find((item) => item.id === +id));

  if (id) {
    //利用find方法寻找到对应的书本
    let rest = data.find((item) => item.id === +id);
    //加判断
    if (rest) {
      res.json({
        status: 0, //0标识成功,其他失败
        message: "获取图书列表数据成功", //描述信息
        data: rest,
      });
    } else {
      res.json({
        status: 1, //0标识成功,其他失败
        message: "获取图书列表数据失败", //描述信息
      });
    }
  } else {
    res.json({
      status: 0, //0标识成功,其他失败
      message: "获取图书列表数据成功", //描述信息
      data,
    });
  }
});
//监听端口
app.listen(8080, () => {
  console.log("8080端口已就绪...");
});

 这样就可以实现利用查询字符串传递参数

3.post方式传递参数的方法

post接口与get接口是有区别的,get的参数一般在请求行中传递,而post一般通过请求体传递

传递方式一般分为

  • 普通键值对
  • json格式
  • 传递formdata

那么如何获取这些参数呢?

使用中间件来解决这个问题

这里会用到另一个第三方模块 multer

//导入模块
const express = require("express");
const multer = require("multer");
const upload = multer({ dest: "images/" });
let app = express();
//中间体
app.use(express.urlencoded()); //普通键值对参数
app.use(express.json()); //json格式
//托管
app.use(express.static("public"));
//post接收普通键值对
app.post("/post", (req, res) => {
  res.json({ 请求成功: req.body });
});
//post接收json格式
app.post("/postJSON", (req, res) => {
  res.json({ 请求成功: req.body });
});
//post接收fd文件
app.post("/admin/article_publish", upload.single("cover"), (req, res) => {
  res.json([{ 文件请求成功: req.file }, { 文本请求成功: req.body }]);
});
//端口监听
app.listen(3000, () => {
  console.log("3000就绪...");
});

普通键值对使用

app.use(express.urlencoded())//获取普通键值对的中间件

json格式使用

app.use(express.json())//获取json格式文件的中间件

这两种格式,数据均存储在req.body

formdata对象

首先需要导入第三方模块multer

const multer = express('multer')

配置multer

const upload = multer({dest:'目录/'})//标识上传的文件保存位置,'目录'可以自己设置

使用方法:

app.post('路径',upload.single('规定本次上传键名'),(req,res)=>{
执行函数
})

这种方式上传的数据,文件对象存储在req.file中,其他数据存储在req.body

四.接口传参

1.请求行

请求行保存请求方式,地址,并且可以以查询字符串的格式传递少量数据

2.请求头

头可以可以附加很多信息,其中content-type规定了请求体中包含的数据类型

常见的三种取值:

常见的content-type
CONTENT-TYPE的值数据格式举例
application/x-www-form-urlencode普通键值对{a:2,b:3}
application/jsonjson对象{"a":"2","b":"3"}
multipart/form-dataformdata上传文件一般不用写,自动生成

3.请求体

请求体是用来携带参数的

这些参数到了后端如何解析由请求头中的content-type决定

五.RESful风格

const express = require('express')

const app = express();

app.get('/articles',(req,res)=>{
    res.send('获取')
})

app.post('/articles',(req,res)=>{
    res.send('添加')
})

app.delete('/articles',(req,res)=>{
    res.send('删除')
})
app.put('/articles',(req,res)=>{
    res.send('编辑')
})

app.listen(8080,()=>{
    console.log(8080); 
})

这样的代码风格十分工整,一目了然


未完待续...

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值