POST/GET请求——常见请求方式处理 ?? iKcamp 制作团队
原创作者:大哼、阿干、三三、小虎、胖子、小哈、DDU、可木、晃晃
文案校对:李益、大力萌、Au、DDU、小溪里、小哈
风采主播:可木、阿干、Au、DDU、小哈
视频剪辑:小溪里
主站运营:给力xi、xty
教程主编:张利涛
视频地址:https://www.cctalk.com/v/15114357765870
文章 Http 请求在学习了 koa-router 之后,我们就可以用它来处理一些常见的请求了,比如 POST/GET 。
koa-router 提供了 .get、.post、.put 和 .del 接口来处理各种请求,但实际业务上,我们大部分只会接触到 POST 和 GET,所以接下来只针对这两种请求类型来说明。
当我们捕获到请求后,一般都需要把请求带过来的数据解析出来。数据传递过来的方式一般有三种:
http://localhost:3000/home?id=12&name=ikcamp
koa-router 封装的 request 对象,里面的 query 方法或 querystring 方法可以直接获取到 Get 请求的数据,唯一不同的是 query 返回的是对象,而 querystring 返回的是字符串。
修改 app.js,我们加入解析方式:
const Koa = require("koa") const router = require("koa-router")() const app = new Koa() router.get("/", async(ctx, next) => { ctx.response.body = `index page
` }) router.get("/home", async(ctx, next) => { console.log(ctx.request.query) console.log(ctx.request.querystring) ctx.response.body = "HOME page
" }) router.get("/404", async(ctx, next) => { ctx.response.body = "404 Not Found
" }) // add router middleware: app.use(router.routes()) app.listen(3000, () => { console.log("server is running at http://localhost:3000") })
运行代码,并通过浏览器访问 http://localhost:3000/home?id=12&name=ikcamp,然后打开控制台会看到下面的输出内容:
{ id: "12", name: "ikcamp" } id=12&name=ikcamp
http://localhost:3000/home/12/ikcamp
这种情况下,解析方式肯定与上面的不一样了,koa-router 会把请求参数解析在 params 对象上,我们修改 app.js 文件,增加新的路由来测试下:
// 增加如下代码 router.get("/home/:id/:name", async(ctx, next)=>{ console.log(ctx.params) ctx.response.body = "HOME page /:id/:name
" })
运行代码,并通过浏览器访问 http://localhost:3000/home/12/ikcamp,然后查看下控制台显示的日志信息:
{ id: "12", name: "ikcamp" }
当用 post 方式请求时,我们会遇到一个问题:post 请求通常都会通过表单或 JSON 形式发送,而无论是 Node 还是 Koa,都 没有提供 解析 post 请求参数的功能。
首先,安装 koa-bodyparser 包:
npm i koa-bodyparser -S
安装完成之后,我们需要在 app.js 中引入中间件并应用:
const Koa = require("koa") const router = require("koa-router")() const bodyParser = require("koa-bodyparser") const app = new Koa() app.use(bodyParser()) router.get("/", async(ctx, next) => { ctx.response.body = `index page
` }) router.get("/home", async(ctx, next) => { console.log(ctx.request.query) console.log(ctx.request.querystring) ctx.response.body = "HOME page
" }) router.get("/home/:id/:name", async(ctx, next)=>{ console.log(ctx.params) ctx.response.body = "HOME page /:id/:name
" }) router.get("/404", async(ctx, next) => { ctx.response.body = "404 Not Found
" }) app.use(router.routes()) app.listen(3000, () => { console.log("server is running at http://localhost:3000") })
然后我们来试着写一个简单的表单提交实例。修改 app.js 增加如下代码,实现增加表单页面的路由:
// 增加返回表单页面的路由 router.get("/user", async(ctx, next)=>{ ctx.response.body = `` })
继续修改 app.js 增加如下代码,实现 post 表单提交对应的路由:
// 增加响应表单请求的路由 router.post("/user/register",async(ctx, next)=>{ let {name, password} = ctx.request.body if( name === "ikcamp" && password === "123456" ){ ctx.response.body = `Hello, ${name}!` }else{ ctx.response.body = "账号信息错误" } })
常见的几种请求,以及相应的参数传递解析,我们已经学习过了。下一节中,我们会把项目整理重构下,做个分层,并引入视图层。
下一篇:代码分层——梳理代码,渐近于 MVC 分层模式
上一篇:iKcamp新课程推出啦~~~~~iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 路由koa-router推荐: 翻译项目Master的自述: 1. 干货|人人都是翻译项目的Master 2. iKcamp出品微信小程序教学共5章16小节汇总(含视频)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/90483.html
摘要:玩转同时全面掌握潮流技术采用新一代的开发框架更小更富有表现力更健壮。融合多种常见的需求场景网络请求解析模板引擎静态资源日志记录错误请求处理。结合语句中转中间件控制权,解决回调地狱问题。注意分支中的目录为当节课程后的完整代码。 ?? 与众不同的学习方式,为你打开新的编程视角 独特的『同步学习』方式 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。 云集一线大厂...
摘要:云集一线大厂有真正实力的程序员团队云集一线大厂经验丰厚的码农,开源奉献各教程。融合多种常见的需求场景网络请求解析模板引擎静态资源日志记录错误请求处理。结合语句中转中间件控制权,解决回调地狱问题。注意分支中的目录为当节课程后的完整代码。 ?? 与众不同的学习方式,为你打开新的编程视角 独特的『同步学习』方式 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。 云...
中间件用法——讲解 Koa2 中间件的用法及如何开发中间件 ?? iKcamp 制作团队 原创作者:大哼、阿干、三三、小虎、胖子、小哈、DDU、可木、晃晃 文案校对:李益、大力萌、Au、DDU、小溪里、小哈 风采主播:可木、阿干、Au、DDU、小哈 视频剪辑:小溪里 主站运营:给力xi、xty 教程主编:张利涛 视频地址:https://www.cctalk.com/v/151143...
视频地址:https://www.cctalk.com/v/15114923889408 showImg(https://segmentfault.com/img/remote/1460000012682164?w=1604&h=964); 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器、路由中间件、Get 和 Post 形式的请求处理等。现在你已经迈出了走向成功的第一步。 ...
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 showImg(https://segmentfault.com/img/remote/1460000012470016?w=1214&h=718); 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await 等新语法,所以请保证 node 环境在 7.6...
阅读 6865·2021-09-22 15:36
阅读 5684·2021-09-02 10:20
阅读 1868·2019-08-30 15:44
阅读 2651·2019-08-29 14:06
阅读 1152·2019-08-29 11:17
阅读 1585·2019-08-26 14:05
阅读 3091·2019-08-26 13:50
阅读 1549·2019-08-26 10:26