http的一些使用点和第三方包express的使用加模拟接口请求实现增删改查

141 阅读4分钟

http的一些使用

1.http服务器的状态码

res.statusCode = 404;

statusCode状态码(404:资源没找到返回,成功默认200)

//导入http模块
const http = require("http");
//创建服务器
const server = http.createServer((req, res) => {
  console.log("接受请求");
  //防止中文乱码
  res.setHeader("content-type", "text/html;charset=utf8");
  //状态码(404:资源没找到返回,成功默认200)
  res.statusCode = 404;
  //响应给客户端(浏览器)
  res.end("你瞅啥");
});
//启动服务(监听)
server.listen(8005, () => {
  console.log("请求成功");
});

2.请求方式

原始的node js请求方式(缺点判断繁琐)

const http = require("http");
//创建服务器
const server = http.createServer((req, res) => {
  console.log(req.method, req.url);
  //解构请求方式里面的method,和请求地址的url
  const { method, url } = req;
  //通过分支判断,区别不同的客户端请求,响应不同的结果  
  if (method === "GET" && url === "/member/care") {
    res.end("获取商品");
  } else if (method === "POST" && url === "/member/care") {
    res.end("添加商品");
  } else if (method === "DELETE" && url === "/member/care") {
    res.end("删除商品");
  } else {
    res.statusCode = 404;
    res.end("哦?");
  }
});
server.listen(8009, () => {
  console.log("请求成功");
});

express第三方包的使用

步骤:1. npm config set registry registry.npm.taobao.org (引入淘宝虚拟地址加快下载包的速度)

2.npm init (初始化项目)

3.npm install express (下载包)

4.下载完成会在文件夹中生成文件

1.引入express的基本使用

引入第三方包express之后就不会写那么多繁琐的判断了,因为都封装好了,使用方法如下

//导包
const express = require("express");
//创建服务
const server = express();
//   业务代码开始
//server.请求方式("请求地址",回调函数 )
server.get("/", function (req, res) {
  //res.send()  自动转换数据格式和自动添加 content-type
  res.send("中文");
});
server.post("/", function (req, res) {
  res.send("哦?");
});
server.delete("/", function (req, res) {
  res.send("嗯?");
});

//  业务代码结束
//启动服务(监听)
server.listen(8007, () => {
  console.log("服务器启动成功");
});

2.使用express写接口接受前端请求的增删改查

很多方法都已经封装好了的,直接用就行,每行都写了注释(使用apipost这个软件调试更方便)

//导包
const express = require("express");
const fs = require("fs");
const { consumers } = require("stream");
//创建服务
const server = express();
server.use(express.urlencoded());
//------业务代码开始------
//查询主页
server.get("/", (req, res) => {
  res.send("查询主页");
});

//查询学员
server.get("/student", (req, res) => {
  fs.readFile("./student.json", (err, data) => {
    //查询失败提示
    if (err) return res.send({ code: 1, message: "获取失败" });
    //查询成功提示
    res.send({
      code: 0,
      message: "获取成功",
      data: JSON.parse(data), //把读取的数据转为数组格式
    });
  });
});

//新增学员
server.post("/student", (req, res) => {
  // console.log("请求体数据", req.body);
  console.log("新增成功", req.body);
  //读取文件
  fs.readFile("./student.json", (err, data) => {
    //失败提示
    if (err) return res.send({ code: 1, message: "获取失败" });
    //把读取的文件转化为数组格式
    const arr = JSON.parse(data);
    //处理学生格式
    const stu = {
      id: Date.now(),
      name: req.body.name,
      age: Number(req.body.age),
      sex: req.body.sex,
    };
    //追加学生数据(插入数组)
    arr.push(stu);
    //把新数据写入文件,第二个参数要转JSON字符串,JSON.stringify(arr,null,2)里面第三个参数是缩进两个空格的意思
    fs.writeFile("./student.json", JSON.stringify(arr, null, 2), (err) => {
      //失败提示
      if (err) return res.send({ code: 1, message: "新增失败" });
      //成功提示(必须要有一个res.send()不能少也不能多)
      res.send({ code: 0, message: "新增成功" });
    });
  });
});

//删除学员
server.delete("/student", (req, res) => {
  // console.log("请求体数据", req.query);
  console.log("查询成功", req.query);
  //读取文件
  fs.readFile("./student.json", (err, data) => {
    //失败提示
    if (err) return res.send({ code: 1, message: "读取失败" });
    //把读取的文件转化为数组格式
    const arr = JSON.parse(data);
    //创建一个新的数组,用数组过滤方法,把不等于要删除的id的数据赋予新的数组
    const newArr = arr.filter((item) => item.id !== Number(req.query.id));
    //把过滤好的数组写入文件,第二个参数要转JSON字符串,JSON.stringify(arr,null,2)里面第三个参数是缩进两个空格的意思
    fs.writeFile("./student.json", JSON.stringify(newArr, null, 2), (err) => {
      //失败提示
      if (err) return res.send({ code: 1, message: "删除失败" });
      //成功提示(必须要有一个res.send()不能少也不能多)
      res.send({ code: 0, message: "删除成功" });
    });
  });
});

//修改学员
server.put("/student", (req, res) => {
  // console.log("请求体数据", req.query)看一下返回的数据
  console.log("查询成功", req.body);
  //读取文件
  fs.readFile("./student.json", (err, data) => {
    //失败提示
    if (err) return console.log("读取失败");
    //把读取的文件转化为数组格式
    const arr = JSON.parse(data);
    //find()按条件寻找 找到符合条件的数组id,那么此时stu就等于数组里面的一个对象了,给stu赋值就是 相当于改变数组里面的对象内容
    const stu = arr.find((item) => item.id === Number(req.body.id));
    //修改对象里面的内容
    stu.name = req.body.name;
    stu.age = Number(req.body.age);
    stu.sex = req.body.sex;
    //    //把修改好的数据写入文件,第二个参数要转JSON字符串,JSON.stringify(arr,null,2)里面第三个参数是缩进两个空格的意思
    fs.writeFile("./student.json", JSON.stringify(arr, null, 2), (err) => {
      //失败提示
      if (err) return console.log("修改失败");
      //成功提示
      res.send({
        code: 0,
        message: "修改成功",
      });
    });
  });
});

//------业务代码结束------
//启动服务(监听)
server.listen(8003, () => {
  console.log("请求成功");
});