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


发布者 ourjs  发布时间 1478085321228
关键字 JS学习  Node.JS 

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









 热门文章 - 分享最多
  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服务器

 相关阅读
  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 模型

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA