OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

OnceIO(Node.JS)的路由(Routing)、路由方法和路由变量


分享到
分类 JS学习   关键字 Node.JS   发布 ourjs  1478085321228
注意 转载须保留原文链接,译文链接,作者译者等信息。  

OnceIO是OnceDoc企业内容(网盘)系统的底层Web框架,它可以实现模板文件、静态文件的全缓存,运行起来完全不需要I/O操作,并且支持客户端缓存优化,GZIP压缩等(只在第一次压缩),拥有非常好的性能,为您节约服务器成本。它可以让你对Web进行分布式存储,即一个扩展包里即可包含前端、后端和数据库定义,只需通过添加/删除目录的方式就可实现功能删减,实现真正的模块化扩展。这里是介绍如何使用OnceIO的一系列文章。

路由定义

路由用于确定应用程序如何响应对特定端点的客户机请求,包含一个 URI(或路径)和一个特定的 HTTP 请求方法(GET、POST 等)。

每个路由可以具有一个或多个处理程序函数,这些函数在路由匹配时执行。

路由定义采用以下结构:

app.METHOD(PATH, HANDLER)

其中:

  • app 是 OnceIO 的实例。
  • METHOD 是 HTTP 请求方法, 如get/post。
  • PATH 是服务器上的路由路径。
  • HANDLER 是在路由匹配时执行的函数。

路由路径

多个路径可以用数组表示,例如:

此路由路径将匹配 apple, banana 和 strawberry

app.get(['/apple', '/banana', '/strawberry'], function(req, res) {
  res.send('fruit')
})

路径可以用正则表达式表示,例如:

此路由路径将匹配 abcd、abbcd、abbbcd 等。

app.get(/ab*cd/, function(req, res) {
  res.send('/ab*cd/')
})  

此路由路径将匹配名称中具有“a”的所有路由。

app.get(/a/, function(req, res) {
  res.send('/a/')
})

此路由路径将匹配 butterfly 和 dragonfly,但是不匹配 butterflyman、dragonfly man 等。

app.get(/.*fly$/, function(req, res) {
  res.send('/.*fly$/')
})

路由变量

路径中可以加入变量,例如:

此路由路径将匹配所有路由,路径的第一个和第二个斜杠之间的内容会被存入 req.params.id 中。如路径为 '/1234/5678',req.params.id 的值将为 '1234'。

app.get('/:id', function(req, res){
  res.send(req.params.id)
})

可以将路由的第三个参数设置为 { mode: 'loose' },令路由路径匹配所有以其开头的路径,例如:

此路由路径将匹配所有以 '/OnceAcademy' 开头的路径,比如 '/OnceAcademy'、'/OnceAcademy/routing'、'/OnceAcademy/middleware',但是不匹配 '/OnceAcademyRouting'、'/OnceAcademyMiddleware'。

app.get('/OnceAcademy', function(req, res) {
  res.send('OnceAcademy')
}, { mode: 'loose' })

响应方法

下表中响应对象 (res) 的方法可以向客户机发送响应,并终止请求/响应循环。如果没有从路由处理程序调用其中任何方法,客户机请求将保持挂起状态。

方法描述
res.end()结束响应进程。
res.redirect()重定向请求。
res.send(statusCode, text)设置响应状态码(默认为 200)并在 text 为空时以响应主体形式发送其字符串表示。text 是选填参数,可以是 html 文件、json 变量等,以响应主体形式发送。
res.send(json)发送 JSON 响应。
res.sendFile()以字节流形式发送文件。
res.cookie(name, value, options)设置 cookie 的名称和值,将其随响应一起发送。

 

 

 OnceIO地址:  https://github.com/OnceDoc/onceio

原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 阿里任性Hr开除月饼极客:这样冰冷的公司没什么值得我留恋
  2. GitHub2016报告AngularJS流行度下降,JavaScript活跃度为Java两倍
  3. 在 2016 年学 JavaScript 是一种什么样的体验?
  4. 2016年收入最高的5个编程语言,JavaScript最流行,Java和C没在前5
  5. 传言GITHUB正在寻求第二轮融资,或面临估值下降、清算或被微软收购
  6. JavaScript函数式编程(一、二、三)
  7. Java 之父求职被嫌年纪大,硅谷公司现在喜欢“小鲜肉”,不爱“老古董”
  8. NodeJS中的Middleware是什么?在OnceIO中创建和使用中间件
  9. OnceIO(Node.JS)中的模板引擎是什么及MVC设计模式的使用与实现
  10. 用OnceIO(NodeJS)搭建简单的web服务器
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. Node.JS的表单提交及OnceIO中接受GET/POST数据的三种方法
  2. OnceIO(Node.JS)中安装、使用和更换doT、EJS、pug等模板引擎
  3. OnceIO(Node.JS)中的模板引擎是什么及MVC设计模式的使用与实现
  4. NodeJS中的Middleware是什么?在OnceIO中创建和使用中间件
  5. 用OnceIO(NodeJS)搭建简单的web服务器
  6. JavaScript函数式编程(一、二、三)
  7. JavaScript在物联网中的应用
  8. 如何编写 jQuery 插件
  9. NodeJS中npm3相对于npm2模块依赖目录层欠的改进
  10. JavaScript的 Event Loop 模型

 关键字 - Node.JS
  1. Express入门教程:一个简单的博客
  2. Oracle发布官方版Node.JS数据库驱动
  3. 为什么你应该抛弃Express的视图渲染引擎
  4. 在OnceIO(Node.JS)中用Redis储存Session
  5. Node.js中的通用基础设计模式
  6. 沃尔玛为什么要采用Node.js
  7. node.js使用unzip解压zip包指定文件,提取 word/excel (docx/pptx/xlsx) 文本内容
  8. Node.JSv8的5个新特性:支持string padding与async/await和object参数省略
  9. Node.JS中如何判断递归嵌套的所有回调函数已经执行完毕,以读取目录下所有文件为例:计数比Promise方式快将近一倍
  10. node.js中fs.stat里的atime,mtime,ctime,birthtime在debian下的更新规则与区别

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号