node项目笔记---GET和POST(一)

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");

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42581563/article/details/108107535