携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
系列介绍
该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。
这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。
环境安装
实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。
以下是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里,查看打印日志
发现get请求的参数已经获取到,并且打印出来了。
到浏览器查看控制台
又遇到我们熟悉或者说经常遇到的报错--跨域报错,我们使用前面介绍的koa-cors中间件来解决跨域报错。
使用koa-cors
const cors = require("koa-cors")
app.use(cors())
使用了koa-cors中间件后,我们再到浏览器里,点击get请求按钮发送get请求。
这时,我们可以看到,浏览器没有报跨域错误了,并且把返回信息打印出来了。
获取post请求参数
app.use(async (ctx) => {
console.log("body", ctx.request.body)
ctx.body = "返回数据"
})
在cmd里,重新用node运行index.js文件。
在浏览器里,点击post请求按钮,发送post网络请求。
我们到cmd里查看打印日志
我们发现,post请求传递的请求参数获取到了,并且打印出来了。
到浏览器控制台里查看,返回信息也打印出来了。
小结
本篇文章主要介绍了怎么在node里面使用koa-body中间件。
使用koa-body中间件后,你就可以在ctx对象上拿到网络请求的请求参数了:
- query:可以拿到get请求的请求参数
- request.body:可以拿到post请求的请求参数
使用koa-body中间件,可以比较方便简洁地获取网络请求的请求参数。
最后,放上自己比较喜欢的一句诗句:
千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》