>  기사  >  php教程  >  Node.js 기반 KoaHub 플랫폼에서 개발된 라우터 라우팅 플러그인 코드

Node.js 기반 KoaHub 플랫폼에서 개발된 라우터 라우팅 플러그인 코드

WBOY
WBOY원래의
2016-10-19 10:18:161211검색

Node.js를 기반으로 KoaHub 플랫폼에서 개발된 Koa 라우터 라우팅 플러그인의 코드 정보 상세
koa 라우터

Koa용 라우터 미들웨어. RESTful 리소스 라우팅을 제공합니다.

koa 라우터

koa용 라우터 미들웨어[list][*]app.get, app.put, app.post 등을 사용한 고속 스타일 라우팅
[*]이름이 지정된 URL 매개변수.
[*]URL 생성이 포함된 명명된 경로.
[*]허용된 방법으로 OPTIONS 요청에 응답합니다.
[*]405 메서드가 허용되지 않음 및 501이 구현되지 않음을 지원합니다.
[*]다중 경로 미들웨어.
[*]여러 ​​라우터.
[*]중첩 가능한 라우터.
[*]ES7 비동기/대기 지원(koa-router 7.x).[/list]koa 2.x

koa 2.x 및 async/await 지원에 대해서는 koa-router 7.x를 참조하세요.

설치

npm을 사용하여 설치:npm install koa-routerAPI 참조[list][*]koa-router
[*]라우터 ⏏
[*]새 라우터([선택])
[*]인스턴스
[*].get|put|post|patch|삭제 ⇒ 라우터
[*].param(param, 미들웨어) ⇒ 라우터
[*].use([경로], 미들웨어, [...]) ⇒ 라우터
[*].routes ⇒ 기능
[*].allowedMethods([옵션]) ⇒ 함수
[*].redirect(소스, 대상, 코드) ⇒ 라우터
[*].route(이름) ⇒ 레이어 | 거짓
[*].url(이름, 매개변수) ⇒ 문자열 | 오류
[*]정적
[*].url(경로, 매개변수) ⇒ 문자열[/list]라우터

종류: 수출형

새 라우터([선택])

새 라우터를 만듭니다.

[테이블=50%]

매개변수 유형설명 [opts] 객체 [opts.prefix] 문자열 접두사 라우터 경로 [/table]기본 예 사용법:var app = require('koa')();<br> var router = require('koa-router')();<br>  <br> router.get('/', function *(next) {...});<br>  <br> app<br>   .use(router.routes())<br>   .use(router.allowedMethods());var app = require('koa')();
var router = require('koa-router')();
 
router.get('/', 함수 *(다음) {...});
 router<br>   .get('/', function *(next) {<br>     this.body = 'Hello World!';<br>   })<br>   .post('/users', function *(next) {<br>     // ... <br>   })<br>   .put('/users/:id', function *(next) {<br>     // ... <br>   })<br>   .del('/users/:id', function *(next) {<br>     // ... <br>   });
  .use(router.routes())
  .use(router.allowedMethods());router.get|put|post|patch|삭제 ⇒ 라우터

verb가 router.get() 또는 router.post()와 같은 HTTP 동사 중 하나인 router.verb() 메서드를 만듭니다. router.verb()를 사용하여 URL 패턴을 콜백 함수 또는 컨트롤러 작업과 일치시킵니다. 여기서 동사는 router.get() 또는 router.post()와 같은 HTTP 동사 중 하나입니다.
router
  .get('/', 함수 *(다음) {router.get('user', '/users/:id', function *(next) {<br>  // ... <br> });<br>  <br> router.url('user', 3);<br> // => "/users/3"      this.body = 'Hello World!';
  })
  .post('/users', 함수 *(다음) {router.get(<br>   '/users/:id',<br>   function *(next) {<br>     this.user = yield User.findOne(this.params.id);<br>     yield next;<br>   },<br>   function *(next) {<br>     console.log(this.user);<br>     // => { id: 17, name: "Alex" } <br>   }<br> );     // ...    })   .put('/users/:id', 함수 *(다음) {
    // ... 
  })   .del('/users/:id', 함수 *(다음) {<br>     // ... <br>   });경로 경로는 path-to-regexp를 사용하여 정규식으로 변환됩니다.

요청 일치 시 쿼리 문자열은 고려되지 않습니다.


이름이 지정된 경로
경로에는 선택적으로 이름이 있을 수 있습니다. 이를 통해 개발 중에 URL을 생성하고 URL 이름을 쉽게 변경할 수 있습니다.router.get('user', '/users/:id', function *(next) {  // ...  });   router.url('user', 3); // => "/users/3" 다중 미들웨어 여러 미들웨어가 제공될 수 있습니다:router.get(   '/사용자/:id',   기능 *(다음) {     this.user = yield User.findOne(this.params.id);     양보 다음;   },   기능 *(다음) {     console.log(this.user);     // => { id: 17, 이름: "Alex" }    } );중첩 라우터 중첩 라우터가 지원됩니다:var forums = new Router(); var 게시물 = 새 라우터();   post.get('/', 함수 *(다음) {...}); post.get('/:pid', 함수 *(다음) {...}); forums.use('/forums/:fid/posts', posts.routes(), posts.allowedMethods());   // '/forums/123/posts' 및 '/forums/123/posts/123'에 응답 app.use(forums.routes());라우터 접두사

경로 경로는 라우터 수준에서 접두어가 붙을 수 있습니다:var router = new Router({<code class="prettyprint linenums lang-php">var router = new Router({<br>   prefix: '/users'<br> });<br>  <br> router.get('/', ...); // responds to "/users" <br> router.get('/:id', ...); // responds to "/users/:id"    접두사: '/users' });  
router.get('/', ...); // '/users'에 응답 
router.get('/:id', ...); // "/users/:id" router.get('/:category/:title', function *(next) {<br>   console.log(this.params);<br>   // => { category: 'programming', title: 'how-to-node' } <br> });URL 매개변수
에 응답합니다.
명명된 경로 매개변수가 캡처되어 ctx.params.router.get('/:category/:title', function *(next) {<tr>에 추가됩니다.   console.log(this.params);<td>   // => { 카테고리: '프로그래밍', 제목: '노드 방법' } </td> });<td></td>Kind<td>: Router의 인스턴스 속성</td> </tr> [table=50%]<tr> <td>매개변수 </td> <td>유형 </td> <td> 설명</td> </tr> <tr> <td> 경로</td> <td> 문자열</td> <td> </td> </tr> <tr> <td> [미들웨어]</td> <td>함수 </td> <td>라우트 미들웨어 </td> </tr> <b></b> 콜백<br><br>함수 <br><br> 경로 콜백<br><br>[/table]<br>router.routes<br> ⇒ 함수<br> <br> 요청과 일치하는 경로를 전달하는 라우터 미들웨어를 반환합니다.<br> <br> 종류: Router의 인스턴스 속성<br> <br> router.use([경로], 미들웨어, [...]) ⇒ 라우터<tr> <td> 경로 콜백 전에 지정된 미들웨어를 사용하세요.</td> <td> 경로가 일치하는 경우에만 실행됩니다. 경로가 제공되면 해당 경로를 포함하는 모든 경로에 대해 미들웨어가 실행됩니다.</td> </tr> 종류: Router의 인스턴스 메소드<tr> <td> [테이블=50%]</td> <td> 매개변수</td> </tr>유형 <tr> <td></td> <td> [경로]</td> </tr>문자열 <tr> <td></td> <td>미들웨어 </td> </tr>함수 <b></b><code class="prettyprint linenums lang-php">router.use(session(), authorize());<br>  <br> // use middleware only with given path <br> router.use('/users', userAuth());<br>  <br> app.use(router.routes());[...]
함수

[/table]
router.use(session(), authorize());  
// 주어진 경로로만 미들웨어를 사용하세요.
router.use('/users', userAuth());   app.use(router.routes()); router.prefix(prefix) ⇒ 라우터 이미 초기화된 라우터 인스턴스의 경로 접두사를 설정합니다. 종류: Router의 인스턴스 방식 [테이블=50%]router.prefix('/things/:thing_id')매개변수

유형

접두사

문자열
[/table] 예 router.prefix('/things/:thing_id')<td>router.allowedMethods([options]) ⇒ 함수</td> <td> 허용된 메서드가 포함된 Allow 헤더가 있는 OPTIONS 요청에 응답하고 적절하게 405 메서드가 허용되지 않음 및 501 구현되지 않음으로 응답하기 위한 별도의 미들웨어를 반환합니다.</td> 종류: Router의 인스턴스 방식 [테이블=50%]매개변수 유형 설명 [옵션] 개체 [options.throw] 부울 상태 및 헤더를 설정하는 대신 오류가 발생합니다 [options.notImplemented] 함수var app = koa();<br> var router = router();<br>  <br> app.use(router.routes());<br> app.use(router.allowedMethods());<br>  <br> Example with Boom<br> <br> var app = koa();<br> var router = router();<br> var Boom = require('boom');<br>  <br> app.use(router.routes());<br> app.use(router.allowedMethods({<br>   throw: true,<br>   notImplemented: () => new Boom.notImplemented(),<br>   methodNotAllowed: () => new Boom.methodNotAllowed()<br> }));기본 NotImplemented 오류 대신 반환된 값을 발생시킵니다.

[options.methodNotAllowed ]

함수 router.redirect('/login', 'sign-in');router.all('/login', function *() {<br>   this.redirect('/sign-in');<br>   this.status = 301;<br> }); 기본 MethodNotAllowed 오류 대신 반환된 값을 버립니다

[/table]예var app = koa(); var router = router();   app.use(router.routes()); app.use(router.allowedMethods());   Boom의 예 var app = koa(); var router = router(); var 붐 = require('붐');   app.use(router.routes()); app.use(router.allowedMethods({   던지기: 사실,   구현되지 않음: () => 새로운 Boom.notImplemented(),   methodNotAllowed: () => 새로운 Boom.methodNotAllowed() }));router.redirect(소스, 대상, 코드) ⇒ 라우터 선택적 30x 상태 코드를 사용하여 소스를 대상 URL로 리디렉션합니다. 소스와 대상 모두 경로 이름이 될 수 있습니다.<code class="prettyprint linenums lang-php">router.redirect('/login', 'sign-in');이는 다음과 같습니다.<code class=" Prettyprint linenums lang-php">router.all('/login', 함수 *() {   this.redirect('/sign-in');   this.status = 301; });종류: Router의 인스턴스 방식 [테이블=50%]<tr> <td> 매개변수</td> <td> 유형</td> <td>설명 </td> </tr> <tr> <td>소스</td> <td>문자열</td> <td>URL 또는 경로 이름.</td> </tr> <tr> <td>목적지</td> <td>문자열</td> <td>URL 또는 경로 이름 >코드</td> </tr>번호<tr> <td>HTTP 상태 코드(기본값: 301).</td> <td>[/table]</td>router.route(name) ⇒ 레이어 false<td> </td> </tr> 이름으로 경로를 조회합니다.<b> </b> <br>종류<br>: Router의 인스턴스 방식<br> <br> 매개변수 유형<b> 이름 문자열</b> <br> router.url(이름, 매개변수) ⇒ 문자열 오류<br> <br> 경로에 대한 URL을 생성합니다. <br> 경로 이름과 지도를 가져옵니다. <br> 위몰 오픈소스 마이크로몰, 위챗몰, 쇼핑몰 소스코드, 3단계 유통, 마이크로 신선식품, 마이크로 과일, 마이크로 테이크아웃, 마이크로 주문 --- 전문적인 O2O 시스템 <br> <br> 위몰 주소 : http://www.wemallshop.com<br> <br> <br> 코드 소스: http://js.koahub.com/home/feature/koa-jwt<br> <br> <br><br><br><img src="http://images2015.cnblogs.com/blog/993200/201610/993200-20161017174927623-1398173112.jpg" alt="Node.js 기반 KoaHub 플랫폼에서 개발된 라우터 라우팅 플러그인 코드" > <p class="da_word"></p>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.