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
严格传参中的多参数传递
会了严格传参之后,再来看一下在严格模式下如何传递多个参数,比如我们再传递一个年龄=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 传参分为自由传参模式和严格传参模式。个人建议如果想让程序健壮性更强,可以多使用严格传参模式。