How To Use Routes
Getting Started
You can try the following commands to start svrx
routing quickly:
In your route.js
:
Then open /blog
, you'll see the json output {title: 'svrx'}
.
Features
support hot reloading ( check it out by editing your
route.js
now)easy writing, clear reading
support expanding through plugin
Syntax
[method](selector).to.[action](payload)
For example:
This rule can be translate into:
method: post
selector: /blog
action: proxy
payload: 'http://music.163.com'
'to' is just a preposition word here, which can be omitted
Route
Route Methods
svrx
route supports all the http methods defined by methods.
⚠️ 'delete' is a reserved word of javascript, so you might use del() to create a DELETE method.
Route Matching
The match rule of svrx
route is based on path-to-regexp
, which is also used by express and koa.
The following is just some briefs of matching rules, please check path-to-regexp
doc for more detail.
Common Rules
/svrx/:id
: named parameters matching, default parameter rule is(\w+)
/svrx/:id(hello|world)
: named parameters matching with custom parameter matching rule/svrx(.*)
: unnamed parameters matching/\/svrx\/(.*)$/
: use regexp directly for complicated routes
Parameters
named parameters like
/:id
, can be accessed throughctx.params.id
unnamed parameters like
/(hello|world)/(.*).html
, can be accessed throughctx.params[0]
andctx.params[1]
regexp like
/\/svrx\/(.*)$/
, can be accessed throughctx.params[i]
in order
Parameters Mapping
In fact, except Action:handle, most actions do not have the ability to access the koa context, so we need parameters mapping
for some actions.
Take sendFile as an example:
/html/index.html
will send${root}/html/index.html
/html/home.htm
will send${root}/html/home.htm
Action List
You can use Route API for Plugins to write your own action.
send
Send response content.
send
is a syntactic sugar for ctx.body
of koa. And there're some default behaviors for different payload types.
string
if started with
<
, like<html>
, theContent-Type
header will be set astext/html
if not, return
text/plain
object
orarray
ornumber
orboolean
...return
json
, theContent-Type
will beapplication/json
sendFile
Send file content, and it will auto set the Content-Type
header according to the file extension.
root path =
serve.base
||root
⚠️support parameters mapping, for example:
json
Send json
response, despite the type of payload.
redirect(target[, code])
Server side redirecting.
target: target path
code: http code, default is
302
⚠️support parameters mapping, for example:
get('/blog/:path(.*)').to.redirect('/user/{path}')
header
Set response headers. header
doesn't send any response content, so you can chain this action to other actions.
rewrite
Rewrite routes.
⚠️support parameters mapping
Both /old/1
and /svrx/1
will return Hello svrx
.
rewrite
doesn't send any response content, you can chain this action to other actions.
proxy(target[, options])
Proxy path to target server.
target: target server
options: same as proxy.options
changeOrigin
secure
pathRewrite
handle
handle
is a powerful action, it defines a middleware of koa, which means all actions above can be implemented by handle
, but the cost is the reduction of code readability.
Instead of using handle, it is recommended to use 'smaller' actions, you can customize your own actions using route api for plugins, see next section.
Route API for Plugins
You can create a new action in your own plugin. There's a router
object in your hooks.onCreate
, which has 3 methods inside:
action: register an action just like
proxy
,json
, ...load: load a routing file
route: define a router in scripts
Please read How To Write A Plugin for more information.
Examples
Last updated