代码地址:https://github.com/changeclass/Node_Blog.git

# NodeJs 处理 GET 请求

GET 请求常用于获取,如页面,及数据获取。

const http = require('http')
const queryString = require('querystring')
const server = http.createServer((req, res) => {
    // 请求的方式
    console.log(req.method)
    // 请求的地址
    const url = req.url
    console.log("url:", url)
    // 将请求的参数转换为对象
    req.query = queryString.parse(url.split('?')[1])
    console.log('req.query:', req.query)
    // 对客户端返回
    res.end(JSON.stringify(req.query))
})
server.listen(8000, (req, res) => {
    console.log("服务启动了:http://127.0.0.1:8000")
})
  • 通过 querystring 模块的 parse 方法可以将请求的参数转换为对象

    const queryString = require('querystring')
    req.query = queryString.parse(req.url.split('?')[1])

    由于 GET 请求传参方式是通过连接 URL 地址传递的。因此只需要根据 ? 分割,取出 URL 中 ? 后部分的内容,将其转换为对象即可。

    例如 http://127.0.0.1:8000/api/blog/list?author=zhangsan

    image-20200929195736496

# NodeJs 处理 POST 请求

POST 请求一般用于传递数据。例如新增博客等。

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(8000, (req, res) => {
    console.log("服务启动了:http://127.0.0.1:8000")
})

image-20200929201016517

如图,此时即可接收 POST 请求发送的原生 JSON 数据。

# 设置返回格式

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]
    // GET 请求参数
    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(8000, (req, res) => {
    console.log("服务启动了:http://127.0.0.1:8000")
})

设置返回格式为 JSON 的目的是为了方便处理数据,只需要在响应头设置 application/json 即可。

image-20200929202616654

那么默认的返回格式即为 JSON

# 搭建开发环境

入口文件使用 bin/www.js 文件作为入口文件,

const http = require('http')
const PORT = 8000
const serverHandle = require('../app')
const server = http.createServer(serverHandle)
server.listen(PORT)

而根目录下的 app.js 作为配置文件使用。

const serverHandle = (req,res)=>{
    // 设置返回格式 JSON
    res.setHeader('Content-type','application/json')
    const resData = {
        name:'XiaoKang',
        site:'xiaokang.me',
        env:process.env.NODE_ENV
    }
    res.end(Json.stringify(resData))
}
module.exports = serverHandle

而我们需要使用到的包有 nodemoncross-env

更新于

请我喝[茶]~( ̄▽ ̄)~*

Dreamy.TZK 微信支付

微信支付

Dreamy.TZK 支付宝

支付宝