编写代码,实现post请求的返回

90 阅读3分钟

** 在原来GET请求和GET请求的返回基础上,继续修改,实现post请求的返回**

** 开启服务,复制到apipost测试后,效果如下**

1.png

// index.js
const http = require("http");
const querystring = require("querystring");
const server = http.createServer((req, res) => {
	const url = req.url;
	const method = req.method;
	// 获取请求的路径
	const path = url.split("?")[0];
	// 获取请求的querystring
	const queryStr = url.split("?")[1];
	// querystring转对象
	const queryObj = querystring.parse(queryStr);
    // 打印对象
    console.log(queryObj);
	if (path === "/api/list" && method === "GET") {
		// 定义返回的响应头, 包含状态码200, 返回类型json
		res.writeHead(200, { "Content-type": "application/json" });
		// 定义返回的响应体, 包括错误码和返回的数据(4条留言)
		const responseBody = {
			errno: 0,
			data: [
				{ user: "张三", content: "张三 真帅!" },
				{ user: "李四", content: "李四 真帅!" },
				{ user: "王五", content: "王五 真帅!" },
				{ user: "赵六", content: "赵六 真帅!" },
			],
		};
		// res.end只能返回字符串, 所以需要把对象转成JSON字符串
		res.end(JSON.stringify(responseBody));
    
    }else if (path === "/api/create" && method === "POST") {
		// 定义返回的响应头, 包含状态码200, 返回类型json
		res.writeHead(200, { "Content-type": "application/json" });
		// 定义返回的响应体, 包括错误码和返回的数据, message为提示信息, data里的id为留言在数据库中的id, 将来通过此id可以从数据库中获取留言的全部信息, 包括作者, 创建时间, 内容, 其他用户针对词条留言的回复, 等等...
		const responseBody = {
			errno: 0,
			data: { id: 1 },
			message: "留言创建成功!",
		};
		// res.end只能返回字符串, 所以需要把对象转成JSON字符串
		res.end(JSON.stringify(responseBody));
	}
    
    else {
		res.end("别瞎写! [○・`Д´・ ○]");
	}
});
server.listen(3000);
console.log("http请求已经被监听, 3000端口, 请访问: http://localhost:3000");

然后, 我们继续编写没有命中路由的情况, 就是url或者method写的不会的情况

最终完整代码如下

// index.js
const http = require("http");
const querystring = require("querystring");
const server = http.createServer((req, res) => {
	const url = req.url;
	const method = req.method;
	// 获取请求的路径
	const path = url.split("?")[0];
	// 获取请求的querystring
	const queryStr = url.split("?")[1];
	// querystring转对象
	const queryObj = querystring.parse(queryStr);
    // 打印对象
    console.log(queryObj);
	if (path === "/api/list" && method === "GET") {
		// 定义返回的响应头, 包含状态码200, 返回类型json
		res.writeHead(200, { "Content-type": "application/json" });
		// 定义返回的响应体, 包括错误码和返回的数据(4条留言)
		const responseBody = {
			errno: 0,
			data: [
				{ user: "张三", content: "张三 真帅!" },
				{ user: "李四", content: "李四 真帅!" },
				{ user: "王五", content: "王五 真帅!" },
				{ user: "赵六", content: "赵六 真帅!" },
			],
		};
		// res.end只能返回字符串, 所以需要把对象转成JSON字符串
		res.end(JSON.stringify(responseBody));
    
    }else if (path === "/api/create" && method === "POST") {
		// 定义返回的响应头, 包含状态码200, 返回类型json
		res.writeHead(200, { "Content-type": "application/json" });
		// 定义返回的响应体, 包括错误码和返回的数据, message为提示信息, data里的id为留言在数据库中的id, 将来通过此id可以从数据库中获取留言的全部信息, 包括作者, 创建时间, 内容, 其他用户针对词条留言的回复, 等等...
		const responseBody = {
			errno: 0,
			data: { id: 1 },
			message: "留言创建成功!",
		};
		// res.end只能返回字符串, 所以需要把对象转成JSON字符串
		res.end(JSON.stringify(responseBody));
	}
    
    else {
		res.writeHead(404, { "Content-type": "text/plain" });
		res.end("404 Not Found");
	}
});
server.listen(3000);
console.log("http请求已经被监听, 3000端口, 请访问: http://localhost:3000");