nodejs系列:28_koa之koa-body中间件-下篇

323 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

系列介绍

该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。

这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。

环境安装

实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。

以下是nodejs的安装地址,如果你没有安装的话,可以先把它安装上。安装了可以忽略这一步,跳到下面一步。

nodejs安装

koa-body

url模块的介绍和使用这篇文章里,我们介绍了如何使用node的内置模块-url模块来解析get请求的请求参数。

而在node的querystring模块文章里,我们介绍了使用node的内置模块querystring来解析post请求的请求参数。不过要想拿到post请求的参数,还需要监听request对象的data事件和end事件。然后才能拿到post请求的请求参数。

我们想要拿到网络请求的请求参数,每次都要使用url模块或者监听request对象的data事件和end事件吗?

如果每次都这么操作获取,那就会比较麻烦。所以,我们就可以使用koa-body中间件了。

koa-body中间件,可以解析网络请求里的请求参数。使用了该中间件,我们就不用每次都使用url模块或者监听request对象的data事件和end事件来获取请求参数了。

前言

在上一篇文章里nodejs系列:27.koa之koa-body中间件-上篇,我们先是介绍了koa-body中间件。同时,还创建好了一个html页面,用来发送ajax请求。

html页面创建好了,那么我们就要使用这个html页面了。同时,我们还要介绍在node里怎么使用koa-body这个中间件。

使用

创建文件

创建一个js文件,命名为index.js

引入koa,实例化koa实例对象
const koa = require("koa")
const app = new koa()
安装koa-body
​
npm install koa-body
使用koa-body中间件
const bodyparser = require("koa-body")
app.use(bodyparser())
启动服务器
​
app.listen(3000, () => {
    console.log("服务器启动成功")
})

在cmd里,用node运行index.js文件

获取get请求参数
​
app.use(async (ctx) => {
    console.log("query", ctx.query)
    ctx.body = "返回数据"
})

创建一个中间件,使用它来打印get请求的请求参数。

运行上一篇已经创建好的html页面,点击get请求按钮,发送get请求到node服务器

我们到cmd里,查看打印日志

0002.png

发现get请求的参数已经获取到,并且打印出来了。

到浏览器查看控制台

0001.png

又遇到我们熟悉或者说经常遇到的报错--跨域报错,我们使用前面介绍的koa-cors中间件来解决跨域报错。

使用koa-cors
const cors = require("koa-cors")
app.use(cors())

使用了koa-cors中间件后,我们再到浏览器里,点击get请求按钮发送get请求。

这时,我们可以看到,浏览器没有报跨域错误了,并且把返回信息打印出来了。

0004.png

获取post请求参数
​
app.use(async (ctx) => {
    console.log("body", ctx.request.body)
    ctx.body = "返回数据"
})

在cmd里,重新用node运行index.js文件。

在浏览器里,点击post请求按钮,发送post网络请求。

我们到cmd里查看打印日志

0003.png

我们发现,post请求传递的请求参数获取到了,并且打印出来了。

到浏览器控制台里查看,返回信息也打印出来了。

0004.png

小结

本篇文章主要介绍了怎么在node里面使用koa-body中间件。

使用koa-body中间件后,你就可以在ctx对象上拿到网络请求的请求参数了:

  • query:可以拿到get请求的请求参数
  • request.body:可以拿到post请求的请求参数

使用koa-body中间件,可以比较方便简洁地获取网络请求的请求参数。

最后,放上自己比较喜欢的一句诗句:

千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》