node项目笔记—GET和POST(一)
引言
1.开发一个博客系统,具有博客的基本功能
2.只开发 server 端,不关心前端开发
关注点:
1.nodejs 处理 http 请求
2.搭建开发环境
3.接口开发(暂时不连接数据库,暂时不考虑登陆)
一、http 请求概述
1.DNS 解析,解析 TCP 链接,发送 http 请求
第一步:检查浏览器缓存中是否缓存过该域名对应的 IP 地址
第二步:如果在浏览器缓存中没有找到 IP,那么将继续查找本机系统是否缓存过 IP
第三步:向本地域名解析服务系统发起域名解析的请求
2.server 接收到 http 请求,处理,并返回
3.客户端接收到返回数据,处理数据(如渲染页面,执行 js)
二、nodejs 处理 http 请求
get 请求 和 querystring
post 请求 和 postdata
路由
例子:
const http = require("http");
const server = http.createServer((req, res) => {
res.end("hello world");
});
server.listen(3000);
1.nodejs 处理 get 请求
1.1 客户端从 server 端获取数据
1.2 通过 querystring 来传递数据, 如 a.html?a=100&b=200
1.3 浏览器直接访问,就发送 get 请求
const http = require("http");
const querystring = require("querystring");
const server = http.createServer((req, res) => {
console.log("method", req.method);
const url = req.url; //获取url
req.query = querystring.parse(url.split("?")[1]); //解析querystring
console.log("query", req.query);
res.end(JSON.stringify(req.query)); //将querystirng返回
});
server.listen(3000);
console.log("OK");
2.nodejs 处理 post 请求
2.1 客户端服务端传递数据,如新建博客
2.2 通过 post data 传递数据
2.3 浏览器无法直接模拟,需要手写 js,或者使用 postman
const http = require("http");
const server = http.createServer((req, res) => {
if (req.method == "POST") {
console.log("req content-type", req.headers["content-type"]);
let postData = "";
req.on("data", chunk => {
postData += chunk.toString();
});
req.on("end", () => {
console.log("postData", postData);
res.end("hello world");
});
}
});
server.listen(3000);
console.log("OK");
3.nodejs 处理路由
const http = require("http");
const server = http.createServer((req, res) => {
const url = req.url;
req.path = url.split("?")[0];
res.end(path);
});
server.listen(3000);
console.log("OK");
4.nodejs 一个综合的小例子
const http = require("http");
const querystring = require("querystring");
const server = http.createServer((req, res) => {
const method = req.method;
const url = req.url;
const path = url.split("?")[0];
const query = querystring.parse(url.split("?")[1]);
//设置返回格式为 JSON
res.setHeader("Content-type", "application/json");
//返回的数据
const resData = {
method,
url,
path,
query
};
//返回
if (method === "GET") {
res.end(JSON.stringify(resData));
}
if (method === "POST") {
let postData = "";
req.on("data", chunk => {
postData += chunk.toString();
});
req.on("end", () => {
resData.postData = postData;
res.end(JSON.stringify(resData));
});
}
});
server.listen(3000);
console.log("OK");