官網(wǎng)文檔
路由其實基本上就是Laravel那套東西,跟Koa2也很像,一看就明白了。默認的路由文件在/start/routes.js里面,代碼很少:
const Route = use('Route')
Route.on('/').render('welcome')
這里的
use是AdonisJs帶的一個全局函數(shù),類似原生的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參數(shù)的路由
// 通過參數(shù)用模型查詢數(shù)據(jù)庫記錄
// 返回一個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和控制器方法對應關(guān)系: 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前綴