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("请求成功");
});