首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求

iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求

作者头像
iKcamp
发布于 2018-07-31 08:48:30
发布于 2018-07-31 08:48:30
65400
代码可运行
举报
文章被收录于专栏:iKcampiKcamp
运行总次数:0
代码可运行

POST/GET请求——常见请求方式处理

?? iKcamp 制作团队

原创作者:大哼阿干三三小虎胖子小哈DDU可木晃晃 文案校对:李益大力萌AuDDU小溪里小哈 风采主播:可木阿干AuDDU小哈 视频剪辑:小溪里 主站运营:给力xixty 教程主编:张利涛


视频地址:https://www.cctalk.com/v/15114357765870

文章

Http 请求

在学习了 koa-router 之后,我们就可以用它来处理一些常见的请求了,比如 POST/GET

koa-router 提供了 .get.post.put.del 接口来处理各种请求,但实际业务上,我们大部分只会接触到 POSTGET,所以接下来只针对这两种请求类型来说明。

当我们捕获到请求后,一般都需要把请求带过来的数据解析出来。数据传递过来的方式一般有三种:

请求参数放在 URL 后面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/home?id=12&name=ikcamp

koa-router 封装的 request 对象,里面的 query 方法或 querystring 方法可以直接获取到 Get 请求的数据,唯一不同的是 query 返回的是对象,而 querystring 返回的是字符串。

修改 app.js,我们加入解析方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  const Koa = require('koa')
  const router = require('koa-router')()
  const app = new Koa()

  router.get('/', async(ctx, next) => {
    ctx.response.body = `<h1>index page</h1>`
  })

  router.get('/home', async(ctx, next) => {
    console.log(ctx.request.query)
    console.log(ctx.request.querystring)
    ctx.response.body = '<h1>HOME page</h1>'
  })

  router.get('/404', async(ctx, next) => {
    ctx.response.body = '<h1>404 Not Found</h1>'
  })

  // 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,然后打开控制台会看到下面的输出内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ id: '12', name: 'ikcamp' }
id=12&name=ikcamp

请求参数放在 URL 中间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/home/12/ikcamp

这种情况下,解析方式肯定与上面的不一样了,koa-router 会把请求参数解析在 params 对象上,我们修改 app.js 文件,增加新的路由来测试下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  // 增加如下代码
  router.get('/home/:id/:name', async(ctx, next)=>{
    console.log(ctx.params)
    ctx.response.body = '<h1>HOME page /:id/:name</h1>'
  })

运行代码,并通过浏览器访问 http://localhost:3000/home/12/ikcamp,然后查看下控制台显示的日志信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ id: '12', name: 'ikcamp' } 

请求参数放在 body

当用 post 方式请求时,我们会遇到一个问题:post 请求通常都会通过表单或 JSON 形式发送,而无论是 Node 还是 Koa,都 没有提供 解析 post 请求参数的功能。

koa-bodyparser 说:『是时候登场了!』

首先,安装 koa-bodyparser 包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i koa-bodyparser -S

安装完成之后,我们需要在 app.js 中引入中间件并应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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 = `<h1>index page</h1>`
  })

  router.get('/home', async(ctx, next) => {
    console.log(ctx.request.query)
    console.log(ctx.request.querystring)
    ctx.response.body = '<h1>HOME page</h1>'
  })

  router.get('/home/:id/:name', async(ctx, next)=>{
    console.log(ctx.params)
    ctx.response.body = '<h1>HOME page /:id/:name</h1>'
  })

  router.get('/404', async(ctx, next) => {
    ctx.response.body = '<h1>404 Not Found</h1>'
  })

  app.use(router.routes())

  app.listen(3000, () => {
    console.log('server is running at http://localhost:3000')
  })

然后我们来试着写一个简单的表单提交实例。修改 app.js 增加如下代码,实现增加表单页面的路由:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  // 增加返回表单页面的路由
  router.get('/user', async(ctx, next)=>{
    ctx.response.body = 
    `
      <form action="/user/register" method="post">
        <input name="name" type="text" placeholder="请输入用户名:ikcamp"/> 
        <br/>
        <input name="password" type="text" placeholder="请输入密码:123456"/>
        <br/> 
        <button>GoGoGo</button>
      </form>
    `
  })

继续修改 app.js 增加如下代码,实现 post 表单提交对应的路由:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  // 增加响应表单请求的路由
  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 = '账号信息错误'
    }
  })

常见的几种请求,以及相应的参数传递解析,我们已经学习过了。下一节中,我们会把项目整理重构下,做个分层,并引入视图层。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI实时对话的通信基础,WebRTC技术综合指南
在通过您的网络浏览器进行音频和视频通话、屏幕共享或实时数据传输时,您可能并不常思考其背后的技术。推动这些功能的核心力量之一就是WebRTC。2011年由谷歌发布的这个开源项目,如今已发展成为一个高度全面且不断扩展的生态系统。尤其是在AI技术大幅突破的当下,WebRTC在AI实时对话方面的紧密联系,更进一步提升了它的重要性。
腾讯云音视频
2025/05/12
3800
如何在远程会议的时候静音吃薯片?微软团队用AI去除视频噪声
上个月,Microsoft宣布,其与Slack,Facebook Workplace以及Google的Hangouts Chat的竞争对手Teams的每日活跃用户已超过4400万。这一里程碑却掩盖了其“稍后”发布的一些新功能。大部分功能都很简单明了:举手功能表明你有话要说;离线和低带宽支持,即使在网络连接不畅或没有网络情况下,也能阅读聊天消息并回复;以及将聊天弹出到一个单独窗口。其中还有一项实时噪声抑制功能吸引了大家眼球 - Microsoft演示AI如何在通话过程中减少让人分心的背景噪声。
大数据文摘
2020/04/28
1.2K0
如何在远程会议的时候静音吃薯片?微软团队用AI去除视频噪声
RTC @scale 2024 | 提升实时通信的视频质量
我(SHYAM SADHWANI)是meta的一名软件工程师,我和亿万用户一样使用视频通话app与家人朋友保持联系,音视频质量在这一场景中非常重要。我有一段时间非常好奇,这种视频质量为什么不如Netflix流,在我使用相同的设备和网络的情况下,我在Netflix中获得了非常高质量的流,但是在TRC通话中我认为质量应该更好。非常幸运的是我找到了视频通话app的工作,我们探索了很多该领域的挑战,并且在接下来的演讲中我将分析我们在这一过程中学到的和所做的。
用户1324186
2024/04/12
3200
RTC @scale 2024 | 提升实时通信的视频质量
想要用WebRTC玩转物联网,看完这篇会给你一些启示
内容来源:由anRTC(ID:Dync-boyuan)投稿,专注于音视频通讯与智能机器人领域,提供从SDK到成熟App的全方位整合服务。
IT大咖说
2018/10/23
1.9K0
想要用WebRTC玩转物联网,看完这篇会给你一些启示
【HarmonyOS之旅】HarmonyOS概述(一)
鸿蒙操作系统(HarmonyOS)是华为开发的全场景分布式操作系统,旨在为多种终端设备提供无缝协同体验。鸿蒙系统的设计理念是“面向未来、面向全场景”,支持多种设备类型,包括智能手机、平板电脑、智能穿戴设备、智慧屏等。
枫叶丹
2024/12/13
3140
【HarmonyOS之旅】HarmonyOS概述(一)
从通信到AI FreeSWITCH与WebRTC
大家好,我是杜金房,此次分享和双向通讯服务器FreeSWITCH以及WebRTC有关。首先我会为大家简单介绍FreeSWITCH,鉴于FreeSWITCH主要用于通信领域,我也会介绍WebRTC并阐述FreeSWITCH与WebRTC的关系,同时结合FreeSWITCH的其他功能和使用场景与其功能以及所使用的多媒体库,进一步探索AI技术加持下FreeSWITCH的未来发展。
LiveVideoStack
2019/07/01
5K1
从通信到AI FreeSWITCH与WebRTC
计算机网络——多媒体网络
我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。 面向群体:在学计网的在校大学生,工作后想要提升的各位伙伴,
学编程的小程
2024/05/26
1570
计算机网络——多媒体网络
LDR6028:一款让智能设备“边充边用”的PD芯片
随着科技的飞速发展,智能设备已成为我们日常生活中不可或缺的一部分。从智能手机到平板电脑,再到笔记本电脑,这些设备不仅极大地丰富了我们的生活方式,也对充电与数据传输技术提出了更高要求。在这一背景下,Type-C PD(Power Delivery)芯片以其卓越的性能和广泛的应用前景,正引领着充电与数据传输技术的新潮流。其中,LDR6028作为一款专为Type-C标准设计的USB PD通信芯片,凭借其出色的OTG(On-The-Go)功能,实现了边充电边数据传输的革新应用,为用户带来了前所未有的便捷体验。
legendary_163
2024/09/09
2300
Scale 2023 | 元宇宙中的实时通话
在当今快速发展的技术环境中,虚拟交流已经成为新的常态。虚拟现实(VR)和增强现实(AR)的出现彻底改变了用户会面和聚集的方式。随着视频会议(VC)软件的广泛采用,远程通信变得比以往任何时候都更加简便和易于访问。AR和VR环境提供了更沉浸式的体验,使用户可以在虚拟世界中感受到身临其境的感觉。这带来了更加引人入胜和有意义的体验,有助于更好地协作和构思。此外,AR/VR环境为用户提供了更高级别的环境控制,允许用户根据自己的需求自定义周围环境。在VR中,与朋友一起看电影、玩游戏、共同设计规格、在相隔数百英里的情况下在白板上协作,这都是真实的可能性。彼此之间的互动从未如此轻松。
用户1324186
2023/09/09
3020
Scale 2023 | 元宇宙中的实时通话
一文详解WebRTC、RTSP、RTMP、SRT
好多开发者,希望对WebRTC、RTSP、RTMP、SRT有个初步的了解,知道什么场景该做怎样的方案选择,本文就四者区别做个大概的介绍。
音视频牛哥
2024/09/27
4.5K0
一文详解WebRTC、RTSP、RTMP、SRT
腾讯会议突围背后:端到端实时语音技术是如何保障交流通畅的?
说到腾讯会议背后的实时语音端到端解决方案,大家可能第一时间就想到了PSTN电话,从贝尔实验室创造模拟电话开始,经过一百多年的发展,整个语音通信、语音电话系统经历了很大一部分变化。尤其是最近三十年来,语音通话由模拟信号变为数字信号,从固定电话变为移动电话,从电路交换到现在的分组交换。
腾讯云开发者
2020/03/25
6.5K0
实时互动点燃创新增长新引擎(内附报告下载)
导语  上周,实时互动产业发展和生态合作论坛在线上举办,来自腾讯云音视频的薛笛及刘连响两位老师分别做了致辞和演讲。腾讯云基于过往20多年在实时音视频领域的技术积累,以及在金融、医疗、工业等产业互联网的深耕经验,希望通过开箱即用的实时互动应用开发工具,助力各行各业实现场景创新。(文末附《实时互动产业发展研究报告》下载) 在论坛上,来自腾讯云音视频的专家工程师刘连响老师,为我们分享了主题为——实时互动助力行业场景创新的精彩演讲。 首先刘老师简单介绍了WebRTC。提到实时通信大家一定会想到WebRTC。Web
腾讯云音视频
2022/06/20
1.6K0
实时互动点燃创新增长新引擎(内附报告下载)
云计算服务提供商将逐步提供哪些免费服务?
一些主要云计算提供商正在为全球各地的组织提供免费的精选服务,并在冠状病毒疫情期间支持研究和协作。
静一
2020/05/25
3K0
[AI Microsoft] Copilot+ PC 的介绍
我们5月20日活动的即时录音已经可以获取。 https://www.microsoft.com/event
从零开始学AI
2024/05/23
4700
[AI Microsoft] Copilot+ PC 的介绍
腾讯实时音视频TRTC百万级用户并发解决方案
今年我们经历了一个特殊时期,导致大家必须很长的时间段内在家中,大量的企业也选择让员工在家中远程办公、学校选择让老师和学生在通过远程教学的方式进行学习。
shixin
2020/02/11
2.1K0
RTC风向标:11月最值得关注的26个热点!
近年来,实时音视频快速发展,WebRTC作为实时音视频的标准也快速发展,从直播到通讯,其应用场景也在不断丰富。如果您关注实时音视频方向的技术产品应用与创新,本系列文章就将会为您分享音视频方向的技术产品动态,助您第一时间获取业界信息。本文将为你快速解析近期值得关注的技术、产品与行业热点。 一、腾讯会议发布3.0版本 11月4日,2021腾讯数字生态大会上发布了腾讯会议3.0版本,下面就分享几个小点。 (一)降低人们达成共识的成本是腾讯会议的定位,产品设计围绕产品定位 这个点深有感触,人们往往会说小团
腾讯云开发者
2021/11/26
2.1K0
干货 | 携程呼叫中心移动坐席解决方案
作者简介 本文作者为携程基础业务研发部呼叫中心团队,其在传统呼叫中心基础上,结合软交换、智能分配、自动语音语义处理等技术,为携程用户提供人性化、人机互动、便捷的电话语音服务。 一、前言 智能手机早已成为日常生活中不可或缺的一部分,随着移动互联网的快速发展,人们的生活习惯与工作方式也在不断发生改变。从移动通信、移动支付,再到移动办公,“移动化”已渗透至各行各业,并逐步成为企业业务发展的趋势。 携程呼叫中心研发团队根据业务的需求,研发完成了一套完整的呼叫中心移动坐席解决方案,使业务坐席不再受制于工作时间、办公地
携程技术
2018/03/16
3.7K0
干货 | 携程呼叫中心移动坐席解决方案
技术战“疫”:人工智能、5G、实时音视频、大数据的技术阅兵式
2003年面对“SARS(非典)”时,移动通信还处于2G时代、网上冲浪还在用ADSL拨号,短信、电话是SARS期间人们沟通以及信息传达的最重要的工具,人们被迫由线下转到线上交易也帮助电子商务走上了快车道。
shixin
2020/02/22
1.6K0
亮眼云发布混合架构音视频SDK:支持所有平台,音视频唇音同步等
亮眼云的音视频SDK从客户业务角度以及技术应用维度提供了更好的跨平台的场景化解决方案,真正解决了目前市面上大部分实时通讯产品与方案中存在的问题。 2018新年伊始,亮眼云技术团队依托在音视频处理和实时
BestSDK
2018/04/19
1.8K0
亮眼云发布混合架构音视频SDK:支持所有平台,音视频唇音同步等
思科Webex与下一代视频会议
视频会议在人们的日常生活中使用愈发频繁,尤其是在新冠肺炎疫情的影响下视频会议市场急剧增长,由此引发了思科网讯视频技术的不断更新。本次分享,我们邀请到了思科协作技术事业部的首席工程师Thomas Davies先生,他向我们分享了AV1的发展历程,开发AV1时所受到的挑战,以及AV2的发展前景及其在实时通信中的作用。
LiveVideoStack
2021/07/12
4680
思科Webex与下一代视频会议
推荐阅读
相关推荐
AI实时对话的通信基础,WebRTC技术综合指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验