Heim > php教程 > php手册 > Router-Routing-Plug-in-Code, entwickelt von der KoaHub-Plattform basierend auf Node.js

Router-Routing-Plug-in-Code, entwickelt von der KoaHub-Plattform basierend auf Node.js

WBOY
Freigeben: 2016-10-19 10:18:16
Original
1230 Leute haben es durchsucht

Code-Informationsdetails des Koa-Router-Routing-Plug-Ins, das von der KoaHub-Plattform basierend auf Node.js entwickelt wurde
Koa-Router

Router-Middleware für Koa. Bietet RESTful-Ressourcenrouting.

Koa-Router

Router-Middleware für Koa[list][*]Express-Routing mit app.get, app.put, app.post usw.
[*]Benannte URL-Parameter.
[*]Benannte Routen mit URL-Generierung.
[*]Reagiert auf OPTIONS-Anfragen mit zulässigen Methoden.
[*]Unterstützung für 405-Methode nicht zulässig und 501 nicht implementiert.
[*]Middleware mit mehreren Routen.
[*]Mehrere Router.
[*]Nestbare Router.
[*]ES7 Async/Await-Unterstützung (Koa-Router 7.x).[/list]Koa 2.x

Informationen zu Koa 2.x und Async/Await-Unterstützung finden Sie unter koa-router 7.x.

Installation

Installation mit npm:npm install koa-routerAPI-Referenz[list][*]koa-router
[*]Router ⏏
[*]neuer Router([opts])
[*]Instanz
[*].get|put|post|patch|delete ⇒ Router
[*].param(param, middleware) ⇒ Router
[*].use([path], middleware, [...]) ⇒ Router
[*].routes ⇒ Funktion
[*].allowedMethods([options]) ⇒ Funktion
[*].redirect(Quelle, Ziel, Code) ⇒ Router
[*].route(name) ⇒ Ebene | falsch
[*].url(name, params) ⇒ String | Fehler
[*]statisch
[*].url(path, params) ⇒ String[/list]Router

Art: Exportierte Klasse

neuer Router([opts])

Erstellen Sie einen neuen Router.

[table=50%]

Param TypBeschreibung [opts] Objekt [opts.prefix] String Präfix-Routerpfade [/table]Beispiel Basic Verwendung: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('/', function *(next) {...});
 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>   }); App
  .use(router.routes())
  .use(router.allowedMethods());router.get|put|post|patch|delete ⇒ Router

Erstellen Sie router.verb()-Methoden, wobei verb eines der HTTP-Verben wie router.get() oder router.post() ist. Ordnen Sie URL-Muster mithilfe von router.verb() Rückruffunktionen oder Controller-Aktionen zu, wobei verb eines der HTTP-Verben wie router.get() oder router.post() ist.
router
  .get('/', function *(next) {router.get('user', '/users/:id', function *(next) {<br>  // ... <br> });<br>  <br> router.url('user', 3);<br> // => "/users/3"      this.body = 'Hallo Welt!';
  })
  .post('/users', function *(next) {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', function *(next) {
    // ... 
  })   .del('/users/:id', function *(next) {<br>     // ... <br>   });Routenpfade werden mit path-to-regexp in reguläre Ausdrücke übersetzt.

Abfragezeichenfolgen werden beim Abgleichen von Anfragen nicht berücksichtigt.


Benannte Routen
Routen können optional Namen haben. Dies ermöglicht die Generierung von URLs und das einfache Umbenennen von URLs während der Entwicklung.router.get('user', '/users/:id', function *(next) {  // ...  });   router.url('user', 3); // => "/users/3" Mehrere Middleware Es können mehrere Middleware angegeben werden:router.get(   '/users/:id',   Funktion *(nächster) {     this.user = yield User.findOne(this.params.id);     Als nächstes nachgeben;   },   Funktion *(nächster) {     console.log(this.user);     // => { id: 17, name: "Alex" }    } );Verschachtelte Router Nesting-Router werden unterstützt: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());   // antwortet auf "/forums/123/posts" und "/forums/123/posts/123" app.use(forums.routes());Router-Präfixe

Routenpfade können auf Routerebene vorangestellt werden: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"    Präfix: '/users' });  
router.get('/', ...); // antwortet auf "/users" 
router.get('/:id', ...); // antwortet auf "/users/:id" router.get('/:category/:title', function *(next) {<br>   console.log(this.params);<br>   // => { category: 'programming', title: 'how-to-node' } <br> });URL-Parameter

Benannte Routenparameter werden erfasst und zu ctx.params.router.get('/:category/:title', function *(next) {<tr> hinzugefügt   console.log(this.params);<td>   // => { Kategorie: 'Programmierung', Titel: 'How-to-Node' } </td> });<td></td>Art<td>: Instanzeigenschaft des Routers</td> </tr> [table=50%]<tr> <td>Param </td> <td>Typ </td> <td> Beschreibung</td> </tr> <tr> <td> Pfad</td> <td> Zeichenfolge</td> <td> </td> </tr> <tr> <td> [Middleware]</td> <td>Funktion </td> <td>Middleware(s) weiterleiten </td> </tr> <b></b> Rückruf<br><br>Funktion <br><br>Routenrückruf<br><br>[/table]<br>router.routes<br> ⇒ Funktion<br> <br> Gibt Router-Middleware zurück, die eine der Anfrage entsprechende Route aussendet.<br> <br> Art: Instanzeigenschaft des Routers<br> <br> router.use([Pfad], Middleware, [...]) ⇒ Router<tr> <td> Verwenden Sie die angegebene(n) Middleware(s) vor dem Routenrückruf.</td> <td> Wird nur ausgeführt, wenn eine Route übereinstimmt. Wenn ein Pfad angegeben ist, wird die Middleware für alle Routen ausgeführt, die diesen Pfad enthalten.</td> </tr> Art: Instanzmethode des Routers<tr> <td> [table=50%]</td> <td>Param</td> </tr>Type <tr> <td></td> <td> [path]</td> </tr>String <tr> <td></td> <td>Middleware </td> </tr>Funktion <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());[...]
Funktion

[/table]
Beispiel router.use(session(), authorize());  
// Middleware nur mit gegebenem Pfad verwenden 
router.use('/users', userAuth());   app.use(router.routes()); router.prefix(prefix) ⇒ Router Legen Sie das Pfadpräfix für eine Router-Instanz fest, die bereits initialisiert wurde. Art: Instanzmethode des Routers [table=50%]router.prefix('/things/:thing_id')Param

Typ

Präfix

String
[/table] Beispiel router.prefix('/things/:thing_id')<td>router.allowedMethods([options]) ⇒ Funktion</td> <td> Gibt eine separate Middleware für die Antwort auf OPTIONS-Anfragen mit einem Allow-Header zurück, der die zulässigen Methoden enthält, und antwortet gegebenenfalls mit 405 Method Not Allowed und 501 Not Implemented.</td> Art: Instanzmethode des Routers [table=50%]Param Typ Beschreibung [Optionen] Objekt [options.throw] Boolean wirft einen Fehler aus, anstatt Status und Header festzulegen [options.notImplemented] Funktionvar 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> }));wirft den zurückgegebenen Wert anstelle des standardmäßigen NotImplemented-Fehlers aus

[options.methodNotAllowed ]

Funktion router.redirect('/login', 'sign-in');router.all('/login', function *() {<br>   this.redirect('/sign-in');<br>   this.status = 301;<br> }); löst den zurückgegebenen Wert anstelle des standardmäßigen MethodNotAllowed-Fehlers aus

[/table]Beispielvar app = koa(); var router = router();   app.use(router.routes()); app.use(router.allowedMethods());   Beispiel mit 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(Quelle, Ziel, Code) ⇒ Router Leiten Sie die Quelle zur Ziel-URL mit optionalem 30-fachem Statuscode um. Sowohl Quelle als auch Ziel können Routennamen sein.<code class="prettyprint Linenums lang-php">router.redirect('/login', 'sign-in');Dies entspricht:<code class=" Prettyprint Linenums lang-php">router.all('/login', function *() {   this.redirect('/sign-in');   this.status = 301; });Art: Instanzmethode des Routers [table=50%]<tr> <td>Param</td> <td>Typ</td> <td>Beschreibung </td> </tr> <tr> <td>Quelle</td> <td>String</td> <td>URL oder Routenname.</td> </tr> <tr> <td>Ziel</td> <td>Zeichenfolge</td> <td>URL oder Routenname >Code</td> </tr>Nummer<tr> <td>HTTP-Statuscode (Standard: 301).</td> <td>[/table]</td>router.route(name) ⇒ Layer | <td> Route mit Vornamen suchen.</td> </tr> <b>Art</b>: Instanzmethode des Routers<br> <br> Parametertyp<br> Namenszeichenfolge<br> <b> router.url(name, params) ⇒ String |. Fehler</b> <br> URL für Route generieren Nimmt den Routennamen und eine benannte Karte an<br> <br> Wemall Open-Source-Mikro-Einkaufszentrum, WeChat-Einkaufszentrum, Mall-Quellcode, dreistufige Verteilung, Mikro-Frischelebensmittel, Mikro-Obst, Mikro-Imbiss, Mikro-Bestellung --- professionelles o2o-System <br> <br> Wemall-Adresse: http://www.wemallshop.com<br> <br> <br> Codequelle: http://js.koahub.com/home/feature/koa-jwt<br> <br> <br><br><br><br> <br>
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage