您现在的位置是:亿华云 > 数据库

手把手搭建koa2后端服务器-其他类型请求参数处理

亿华云2025-10-03 20:08:14【数据库】5人已围观

简介前面我们已经介绍了基础 web 框架用到的简单功能,也完善了项目文件结构,接下来业务逻辑处理只要按照目录用途添加对应的文件和逻辑就可以了。这章我们来看一下常用的请求参数获取处理逻

前面我们已经介绍了基础 web 框架用到的手把手搭简单功能,也完善了项目文件结构,后端接下来业务逻辑处理只要按照目录用途添加对应的服务文件和逻辑就可以了。这章我们来看一下常用的器其请求请求参数获取处理逻辑。

Post 请求体

请求体参数我们在登录和注册接口中已经使用到了,类型就是参数处理 ctx.request.body 中的对象,对于表单或者 Json 都可以处理,手把手搭在前端通过 Post 消息的后端 data 携带消息体即可,这里就不再做介绍了。服务

Get 查询参数

在 get 请求中,器其请求我们经常使用 ?类型name=xxx&age=11 这种方式传递参数给后端,服务器租用koa2 中我们可以使用 ctx.query 或者 ctx.querystring 获取查询参数,参数处理通常情况下我们使用 ctx.query就行了,手把手搭因为它会把我们的后端参数处理成对象的方式,更方便使用,服务而且在参数验证的处理中,我们也使用了这种方式去处理。

const validate = async (

ctx: Context,

rules: Rules,

): Promise<{ data: T; error: string }> => {

const validator = new Schema(rules);

let data: any = null;

switch (ctx.method) {

case GET:

data = ctx.query;

break;

case POST:

data = ctx.request.body;

break;

......

}

......

};

但是在一些特殊情况下,例如 ?xxxxxxx 这种请求中,参数并不是键值对的方式,而是源码库一串字符串,这时我们就应该采用 ctx.querystring 的方式来获取其值。对于查询参数,我们写一个例子来测试一下:

增加查询指定用户信息接口

// src/controller/user/view.ts

class UserController {

async getUserInfo(ctx: Context) {

console.log(ctx.query);

response.success(ctx, ctx.query, 获取用户信息成功);

}

}

配置路由

// src/controller/user/router.ts

router.get(/getUserInfo, UserController.getUserInfo);

在浏览器中我们请求:

http://localhost:3300/getUserInfo?name=张三&age=12,返回消息如下

路径参数

除了请求体参数和查询参数外,还有一类参数—路径参数,请求方式类似这种:/getUserInfo/123、/getUserInfo/231,参数获取方法非常简单:ctx.params,主要是路由定义方式有所不同,看下面的例子:

// src/controller/user/view.ts

async getUserInfo(ctx: Context) {

console.log(ctx.params);

response.success(ctx, ctx.params, 获取用户信息成功);

}

// src/controller/user/router.ts

router.get(/getUserInfo/:name, UserController.getUserInfo);

我们通过浏览器访问:

http://localhost:3300/getUserInfo/tom,name为tom

很赞哦!(258)