How To Use Routes
Last updated
Was this helpful?
Last updated
Was this helpful?
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'}
.
support hot reloading ( check it out by editing your route.js
now)
easy writing, clear reading
support expanding through
[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
⚠️ 'delete' is a reserved word of javascript, so you might use del() to create a DELETE method.
/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
named parameters like /:id
, can be accessed through ctx.params.id
unnamed parameters like /(hello|world)/(.*).html
, can be accessed through ctx.params[0]
and ctx.params[1]
regexp like /\/svrx\/(.*)$/
, can be accessed through ctx.params[i]
in order
/html/index.html
will send ${root}/html/index.html
/html/home.htm
will send ${root}/html/home.htm
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>
, the Content-Type
header will be set as text/html
if not, return text/plain
object
or array
or number
or boolean
...
return json
, the Content-Type
will be application/json
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:
Send json
response, despite the type of payload.
Server side redirecting.
target: target path
code: http code, default is 302
⚠️support parameters mapping, for example:
get('/blog/:path(.*)').to.redirect('/user/{path}')
Set response headers. header
doesn't send any response content, so you can chain this action to other actions.
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 path to target server.
target: target server
changeOrigin
secure
pathRewrite
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.
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
svrx
route supports all the http methods defined by .
The match rule of svrx
route is based on , which is also used by and .
The following is just some briefs of matching rules, please check for more detail.
In fact, except , most actions do not have the ability to access the koa context, so we need parameters mapping
for some actions.
Take as an example:
You can use to write your own action.
options: same as
Please read for more information.