koa2获取HTTP请求参数

HTTP

什么是HTTP

HTTP,即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求。

客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息,还可能包含请求的内容。

HTTP的请求方式

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

其中:
HTTP1.0定义了三种请求方法: GET, POSTHEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACECONNECT 方法

最常用的四种请求方法:GET, POST, PUT, DELETE

获取HTTP请求参数

官网地址:https://www.koajs.com.cn/#context

更多精彩内容,请微信搜索“前端爱好者戳我 查看

获取get请求

以下两种方式二选一

let { id } = ctx.request.query 
let { id } = ctx.query

实例


const router = new Router({
    prefix: '/user'
}) 

router.get('/del', async (ctx) => {
   let { id } = ctx.request.query 
    console.log(id)
    ctx.body = "删除用户"
})

发送请求

结果

实例2


const router = new Router({
    prefix: '/user'
}) 

router.get('/del', async (ctx) => {
    let { id } = ctx.query
    console.log(id)
    ctx.body = "删除用户"
})

发送请求

结果

获取post请求

使用ctx.request.body(此方法错误)

router.post('/add', async (ctx) => {
	let {username,pwd} = ctx.request.body
	console.log(username,pwd)
	ctx.body = '添加用户'
})

发送请求

注意: 这里很明显报了500错误,查看控制台,报错如下:

控制台显示

原因ctx.request.body,这个不存在。

解决方案:获取post请求参数,使用原生比较繁琐,需要转换,使用中间件【koa-bodyparser】来获取post请求参数.

使用中间件 koa-bodyparser

安装中间件 koa-bodyparser

npm install koa-bodyparser --save

引入使用中间件

const bodyParser = require('koa-bodyparser')
app.use(bodyParser())

发送请求

结果

获取路由参数

let id = ctx.params.id

实例

router.get('/find/:id', async (ctx) => {
	let id = ctx.params.id
	console.log(id)
	ctx.body = '这是用户首页'
}

发送请求

结果

完整代码

const koa = require('koa')
const bodyparser = require('koa-bodyparser')
const Router = require('koa-router')
const app = new koa()
const router = Router({
	prefix: '/user'
})
 
app.use(bodyparser())
app.use(router.routes())

router.get('/', async (ctx) => { 
	ctx.set("Allow","GET,POST")
	ctx.status = 301
	ctx.body = {
		code: 200,
		msg: '这是请求首页的信息'
	}
})

//  获取路由参数
router.get('/find/:id', async (ctx) => {
	let id = ctx.params.id
	console.log(id)
	ctx.body = '这是用户首页'

})

// 获取get请求参数
router.get('/del', async (ctx) => {
	let {id} = ctx.request.query 
	console.log(id)
	ctx.body = '删除用户'
})

router.get('/del2', async (ctx) => { 
	let {id} = ctx.query
	console.log(id)
	ctx.body = '删除用户'
})

// 获取post请求参数
router.post('/add', async (ctx) => {
	let {username,pwd} = ctx.request.body
	console.log(username,pwd)
	ctx.body = '添加用户'
})

app.listen(3000)

总结

  • 获取get请求参数:ctx.request.query 或者 ctx.query
  • 获取post请求参数:使用中间件【koa-bodyparser
  • 获取路由参数:使用 ctx.params.x x代表需要的参数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端布道人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值