nodejs-处理http请求

文章目录

  • 前言
  • node 处理 get 请求
  • node 处理 post 请求
  • 总结


前言

使用nodejs搭建后端代理服务,处理http请求,理解nodejs是如何处理get、post请求的


node 处理 get 请求

  • 使用 http 模块创建代理服务器
  • 使用 querystring 模块解析请求参数
  • req.end 方法发送消息

入口文件 index.js

const http = require('http')
const queryString = require('querystring')

// 创建代理服务器
const server = http.createServer((req, res) => {
  const {url} = req
  console.log('request----url',url) // 打印下请求的url
  req.query = queryString.parse(url.split('?')[1]) 
  res.end(JSON.stringify(req.query)) // 对象转JSON字符串,否则发送的将会是 [object Object]
})

server.listen(3030) // 监听3030接口
console.log('3030 listening~~~')

end:写出最后的数据,并且关闭流,不使用该方法的话,客户端将默认对话并未结束并保持等待;

启动服务:

node index.js

浏览器访问url: http://localhost:3030/node/http-test?method=get&year=2023,浏览器会会发起get请求,结果如下
nodejs-处理http请求_第1张图片

控制台:
在这里插入图片描述

通过观察浏览器的network以及打印,会发现浏览器自动发送一个路径为 /favicon.ico 的请求,这个请求是页面tab中的小图标,可以忽略

在这里插入图片描述

node 处理 post 请求

  • 使用 http 模块创建代理服务器
  • 使用 req.on 方法监听请求
  • toString() 将二进制转换为字符串

入口文件 index.js

const server = http.createServer((req, res) => {
  
   const {url, headers} = req
   
   console.log('request----url', url)
   console.log('headers----', headers)
   res.setHeader('Content-type','application/json')
   let data 
   req.on('data', chunk => {
    // 二进制 => 字符串
    data += chunk.toString()
   })

   req.on('end', chunk => {
    console.log('数据接收完毕----', data)
    res.end(
      JSON.stringify({
        data:headers,
        code:200
      })
    )
   })
 })
server.listen(3030)
console.log('3030 listening~~~')

req.on:服务端以流的形式接收来自客户端的数据,on 方法对收到的数据进行监听并决定处理方式

  • data: 接收到数据时触发,当传输的数据流较大时,可能会分多次接收
  • end: 数据接收完毕时触发

启动服务:

node index.js

发送post请求需要借助postman工具,body中携带json数据并发送请求:

nodejs-处理http请求_第2张图片

控制台:

nodejs-处理http请求_第3张图片

总结

node处理http请求

  • get请求
  • post请求

你可能感兴趣的:(Node.js,网络协议,node.js)