Node.js全栈之巅

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语法,更效仿了LaravelFacades设计模式。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前缀
上一篇下一篇

猜你喜欢

热点阅读