KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情

koa-router

Router middleware for koa. Provides RESTful resource routing.

koa-router

     

Router middleware for koa

  • Express-style routing using app.get, app.put, app.post, etc.
  • Named URL parameters.
  • Named routes with URL generation.
  • Responds to OPTIONS requests with allowed methods.
  • Support for 405 Method Not Allowed and 501 Not Implemented.
  • Multiple route middleware.
  • Multiple routers.
  • Nestable routers.
  • ES7 async/await support (koa-router 7.x).

koa 2.x

See koa-router 7.x for koa 2.x and async/await support.

Installation

Install using npm:

npm install koa-router

API Reference

Router

Kind: Exported class

new Router([opts])

Create a new router.


Param

Type

Description
[opts] Object  
[opts.prefix] String prefix router paths

Example Basic usage:

var app = require(‘koa‘)();
var router = require(‘koa-router‘)();

router.get(‘/‘, function *(next) {...});

app
  .use(router.routes())
  .use(router.allowedMethods());

router.get|put|post|patch|delete ? Router

Create router.verb() methods, where verb is one of the HTTP verbes such as router.get() or router.post().

Match URL patterns to callback functions or controller actions using router.verb(), where verb is one of the HTTP verbs such as router.get() orrouter.post().

router
  .get(‘/‘, function *(next) {
    this.body = ‘Hello World!‘;
  })
  .post(‘/users‘, function *(next) {
    // ...
  })
  .put(‘/users/:id‘, function *(next) {
    // ...
  })
  .del(‘/users/:id‘, function *(next) {
    // ...
  });

Route paths will be translated to regular expressions using path-to-regexp.

Query strings will not be considered when matching requests.

Named routes

Routes can optionally have names. This allows generation of URLs and easy renaming of URLs during development.

router.get(‘user‘, ‘/users/:id‘, function *(next) {
// ...
});

router.url(‘user‘, 3);
// => "/users/3" 

Multiple middleware

Multiple middleware may be given:

router.get(
  ‘/users/:id‘,
  function *(next) {
    this.user = yield User.findOne(this.params.id);
    yield next;
  },
  function *(next) {
    console.log(this.user);
    // => { id: 17, name: "Alex" }
  }
);

Nested routers

Nesting routers is supported:

var forums = new Router();
var posts = new Router();

posts.get(‘/‘, function *(next) {...});
posts.get(‘/:pid‘, function *(next) {...});
forums.use(‘/forums/:fid/posts‘, posts.routes(), posts.allowedMethods());

// responds to "/forums/123/posts" and "/forums/123/posts/123"
app.use(forums.routes());

Router prefixes

Route paths can be prefixed at the router level:

var router = new Router({
  prefix: ‘/users‘
});

router.get(‘/‘, ...); // responds to "/users"
router.get(‘/:id‘, ...); // responds to "/users/:id"

URL parameters

Named route parameters are captured and added to ctx.params.

router.get(‘/:category/:title‘, function *(next) {
  console.log(this.params);
  // => { category: ‘programming‘, title: ‘how-to-node‘ }
});

Kind: instance property of Router


Param

Type

Description
path String  
[middleware] function route middleware(s)
callback function route callback

router.routes ? function

Returns router middleware which dispatches a route matching the request.

Kind: instance property of Router

router.use([path], middleware, [...]) ? Router

Use given middleware(s) before route callback.

Only runs if any route is matched. If a path is given, the middleware will run for any routes that include that path.

Kind: instance method of Router


Param

Type
[path] String
middleware function
[...] function

Example

router.use(session(), authorize());

// use middleware only with given path
router.use(‘/users‘, userAuth());

app.use(router.routes());

router.prefix(prefix) ? Router

Set the path prefix for a Router instance that was already initialized.

Kind: instance method of Router


Param

Type
prefix String

Example

router.prefix(‘/things/:thing_id‘)

router.allowedMethods([options]) ? function

Returns separate middleware for responding to OPTIONS requests with an Allow header containing the allowed methods, as well as responding with 405 Method Not Allowed and 501 Not Implemented as appropriate.

Kind: instance method of Router


Param

Type

Description
[options] Object  
[options.throw] Boolean throw error instead of setting status and header
[options.notImplemented] Function throw the returned value in place of the default NotImplemented error
[options.methodNotAllowed] Function throw the returned value in place of the default MethodNotAllowed error

Example

var app = koa();
var router = router();

app.use(router.routes());
app.use(router.allowedMethods());

Example with Boom

var app = koa();
var router = router();
var Boom = require(‘boom‘);

app.use(router.routes());
app.use(router.allowedMethods({
  throw: true,
  notImplemented: () => new Boom.notImplemented(),
  methodNotAllowed: () => new Boom.methodNotAllowed()
}));

router.redirect(source, destination, code) ? Router

Redirect source to destination URL with optional 30x status code.

Both source and destination can be route names.

router.redirect(‘/login‘, ‘sign-in‘);

This is equivalent to:

router.all(‘/login‘, function *() {
  this.redirect(‘/sign-in‘);
  this.status = 301;
});

Kind: instance method of Router


Param

Type

Description
source String URL or route name.
destination String URL or route name.
code Number HTTP status code (default: 301).

router.route(name) ? Layer | false

Lookup route with given name.

Kind: instance method of Router


Param

Type
name String

router.url(name, params) ? String | Error

Generate URL for route. Takes the route name and a map of named

wemall  开源微商城 ,微信商城,商城源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统

wemall地址:http://www.wemallshop.com

代码来源:http://js.koahub.com/home/feature/koa-jwt

时间: 2024-10-08 03:39:11

KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情的相关文章

KoaHub平台基于Node.js开发的Koa的skip插件代码详情

koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is met. Install npm i koahub-skip --save Usage With existing middlewares: var skip = require('koahub-skip'); var serve = require('koa-static'); var static

KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口

co-request co-request promisify wrapper for request co-request Simple wrapper to the request library for co-like interface (node.js generator based code). You can use it with koa or co To install simply run: npm install co-request Require co first, a

KoaHub平台基于Node.js开发的Koa的rewrite and index support插件代码详情

koa-static-server Static file serving middleware for koa with directory, rewrite and index support koa-static-server static file serving middleware for koa with directory, rewrite and index support Installation $ npm install koa-static-server API var

KoaHub.JS基于Node.js开发的Koa 生成验证码插件代

ccap node.js generate captcha using c++ library CImg without install any other lib or software node-ccap -- node.js generate captcha using c++ library CImg. You can generate captcha without install any other libraries or software, only do npm install

KoaHub.JS基于Node.js开发的处理和显示日期代码

moment Parse, validate, manipulate, and display dates      A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. Documentation Port to ECMAScript 6 (version 2.10.0) Moment 2.10.0 does not bring any new fea

基于Node.js的文件服务器(使用Q重构代码)

之前写过一篇文章,简单介绍了一个基于Node.js的静态文件服务器.那时还只是个人兴趣.最近又有了关于服务器的新的需求,我就想花点时间,好好研究一下.所以把之前的代码拿出来重构了一番,整体代码变得干净很多. 首先最新Node.js是支持generator的,所谓generator,就是javascript中的协程(半协程),不过功能稍弱,仅仅是为了解决js中凶名赫赫的callback hell而诞生的.这里我并没有使用generator,而是使用promise(饭要一口一口吃,先弄明白promi

NodeBB – 基于 Node.js 的开源论坛系统

NodeBB 是一个更好的论坛平台,专门为现代网络打造.它是免费的,易于使用. NodeBB 论坛软件是基于 Node.js 开发,支持 Redis 或 MongoDB 的数据库.它利用 Web Socket 实现即时交互和实时通知.NodeBB 向下兼容到 IE8 ,有许多现代化的开箱即用功能:如社交网络集成和流媒体的讨论. 在线演示      源码下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HT

Node.js开发入门—notepad++ for Node.js

对于Node.js开发,论IDE的话,Webstorm是不二的选择,但它是收费的(可免费使用30天).一开始,我们先将就一下,使用notepad++来编写Node.js应用.这样做还有一大好处:没有关于Node.js的代码高亮和自动补全,可以更好地敦促我们使用在线API文档记忆各种类库API.死磕自己吧,enjoy it. notepad++的安装与配置 到"https://notepad-plus-plus.org/download/v6.8.2.html"这里下载吧,6.8.2版本

node.js express 4.x Router学习心得

express是基于node.js开发的一款MVC模式的Web框架,该框架轻量.支持MVC模式.支持很多常用的中间件(如 body-parser:用于解析客户端请求的body中的内容,,express-session:session解析,cookie-parser:cookie解析),个人感觉最好地放就是支持路由.我们开发的时候,经常会用到路由.像其他语言,比如说java,个人理解java对路由的处理是通过filter.或者listener来处理的,node.js是诞生不久,生态圈的完善还有一段