AdonisJs v4学习笔记 3 - 路由
2017-10-11 本文已影响25人
全栈之巅Johnny
官网文档
路由其实基本上就是Laravel那套东西,跟Koa2也很像,一看就明白了。默认的路由文件在/start/routes.js
里面,代码很少:
const Route = use('Route')
Route.on('/').render('welcome')
这里的
use
是AdonisJs带的一个全局函数,类似原生的require
但又不是完整路径。其实是类似于PHP的use
语法,更效仿了Laravel
的Facades
设计模式。use('Route')
这里的Route
其实只是一个简短的别名,对应AdonisJs Framework中的路由类。
上面的路由应该很好理解,其实就是『访问路径/
时,渲染welcome
模板』,模板文件是/resources/views/welcome.edge
。
除了上面直接渲染模板的路由,基本的GET/POST/PUT/DELETE
等这些请求方法当然也是支持的,下面是更多的例子:
//直接返回纯文字
Route.get('/', () => 'Hello world')
// 放心使用async吧
Route.post('/users', async () => {
})
Route.put('/users/1', async () => {
})
Route.delete('/', async () => {
})
// 甚至同时匹配多种请求方法到同一路由
Route.route('/', async () => {
}, ['GET', 'POST'])
// 带有URL参数的路由
// 通过参数用模型查询数据库记录
// 返回一个JSON对象
Route.get('posts/:id', async ({ params }) => {
const post = await Post.find(params.id)
return post
})
// 指向一个Controller的某个方法,这个常用。
// 控制器文件位于`/app/Controllers/Http/UserController.js`
// 可用`adonis make:controller User`自动生成
Route.get('/api/v1/users', 'UserController.index')
// 需要已登录用户才能访问的RESTful路由
// url和控制器方法对应关系: https://dev.adonisjs.com/docs/4.0/routing#_route_resources
Route
.resource('users', 'UsersController')
.middleware(['auth'])
// 路由组,这个必须用,有同样URL前缀或中间件需要放到一起的路由用`Route.group`来定义。
Route
.group(() => {
Route.get('users', 'UserController.index')
Route.post('users', 'UserController.store')
})
.prefix('api/v1') // url前缀