05.Egg.js教程-Get请求和参数传递

目录
文章目录隐藏
  1. Get 请求的特点
  2. 自由传参模式
  3. 严格传参模式
  4. 严格传参中的多参数传递

Get 请求的特点

通过 URL 来访问一个地址,比如http://127.0.0.1:7001,这种请求方式就是 Get 请求。Get 请求也是我们最常用的请求方式。包括现在的扫码请求,其实也是变相的 Get 请求。

  • 优点:使用简单,清晰有条例。适合网站和对外 App 的使用。
  • 缺点:传递参数是有大小限制,安全性较差,不能完成重要数据的传递。

既有优点,又有缺点,所以就要根据具体的使用情况,而选择使用哪种请求方式。

自由传参模式

Get 请求我个人把它分为两种传参模式,一种是自由传参模式。这种传参模式和最早的传参模式相同。传递的参数个数和名称没有具体明确定义,设置不限制你是否传递参数。使用起来非常的灵活,所以就叫做自由传参模式。

下面写一个符合资源传参的Controller方法。打开/app/controller/mybj.js文件,重新编写一个getGirl()的方法。

async getGirl(){
    const {ctx} = this;
    ctx.body = ctx.query;
}

这里的ctx.query就是获得传递的参数。写完后还需要到router.js文件下,增加路由后才可以访问。

打开/app/router.js文件。

router.get('/getGirl', controller.mybj.getGirl);

你通过浏览器访问,URL 为[http://127.0.0.1:7001/getGirl?name=小红](http://127.0.0.1:7001/getGirl?name=%E5%B0%8F%E7%BA%A2),这时候页面就会显示传你传递的参数。

那如何体现自由呢,首先你可以不传递参数,只是页面什么都不显示了,只显示一个{ }。还可以传递多个参数,比如传递名字为小红,年龄为 20 岁, 页面就会完全的显示出来。

http://127.0.0.1:7001/getGirl?name=小红&age=20

自由传参模式

这时候是不是学程序还是挺有意思的,真的可以随便创造出一个女朋友出来。

严格传参模式

和自由传参模式对应的就是严格传参模式,也就是你传递的参数个数是固定的,你传递参数顺序是固定的,你传递的参数名称是固定的。

Get 的严格传参模式需要配合router.js文件进行设置。例如设置一个getGirl2的路径,然后必须传递一个name的参数,就可以这样设置。

router.get('/getGirl2/:name', controller.mybj.getGirl2);

设置好路由后,再到/app/controller/mybj.js。编写一个getGirl2的方法就可以。

async getGirl2(){
    const {ctx} = this;
    ctx.body=ctx.params.name;
}

ctx.params是获取所有的传递参数,ctx.params.name是获取传递参数的 name 值。

这时候的访问 URL 不在是用?来开始传递参数了,而是直接用/ 左斜杠来传递。

http://127.0.0.1:7001/getGirl2/小红

严格传参模式

严格传参中的多参数传递

会了严格传参之后,再来看一下在严格模式下如何传递多个参数,比如我们再传递一个年龄=20 岁.

路由配置页面就可以这样设置。

router.get('/getGirl2/:name/:age', controller.mybj.getGirl2);

然后再修改对应的getGirl2()方法,接受到姓名和年龄后,显示出来。这里就是完全动态的显示了。

async getGirl2(){
    const {ctx} = this;
    let name = ctx.params.name;
    let age = ctx.params.age;
    ctx.body='大哥你好,我是'+name+',今年'+age+'岁.欢迎光临红浪漫!';
}

这样的应用是不是越来越好了呢?现在程序就支持传递多个参数了。

总结:这篇文章,我们主要学习了 Egg.js 中的 Get 请求和传参方式,Get 传参分为自由传参模式和严格传参模式。个人建议如果想让程序健壮性更强,可以多使用严格传参模式。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 05.Egg.js教程-Get请求和参数传递

发表回复