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

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

当前文章:手把手搭建koa2后端服务器-其他类型请求参数处理
文章转载:http://www.shufengxianlan.com/qtweb/news45/171345.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联