路由定义
路由的配置文件统一写在 route
目录下,统一导出一个函数,路由配置写在这个函数内
import { RouteType } from 'think-ts-lib'
export default (routes: RouteType) => {
// 分组路由且挂载了路由中间件
routes.group('/api/v1', (route: RouteType) => {
route.get('/hello', 'hello/sayHello')
route.post('/world', 'hello/sayWorld')
})
// 视图演示
routes.get('/', 'hello/showIndex')
}
import { RouteType } from 'think-ts-lib'
export default (routes: RouteType) => {
// 分组路由且挂载了路由中间件
routes.group('/api/v1', (route: RouteType) => {
route.get('/hello', 'hello/sayHello')
route.post('/world', 'hello/sayWorld')
})
// 视图演示
routes.get('/', 'hello/showIndex')
}
GET 路由
route.get('<路由地址>','<控制器文件名称>/<控制器方法名称>')
route.get('<路由地址>','<控制器文件名称>/<控制器方法名称>')
如果使用
View()
去渲染视图,那么请采用GET路由
POST 路由
route.post('<路由地址>','<控制器文件名称>/<控制器方法名称>')
route.post('<路由地址>','<控制器文件名称>/<控制器方法名称>')
PUT 路由
route.put('<路由地址>','<控制器文件名称>/<控制器方法名称>')
route.put('<路由地址>','<控制器文件名称>/<控制器方法名称>')
DELETE 路由
route.delete('<路由地址>','<控制器文件名称>/<控制器方法名称>')
route.delete('<路由地址>','<控制器文件名称>/<控制器方法名称>')
控制器分级写法
route.post('<路由地址>','<文件夹名称/控制器文件名称>/<控制器方法名称>')
route.post('<路由地址>','<文件夹名称/控制器文件名称>/<控制器方法名称>')
分组路由
route.group('<分组前缀名>',(router) => {
router.get('<路由地址>','<控制器文件名称>/<控制器方法名称>')
router.post('<路由地址>','<控制器文件名称>/<控制器方法名称>')
})
route.group('<分组前缀名>',(router) => {
router.get('<路由地址>','<控制器文件名称>/<控制器方法名称>')
router.post('<路由地址>','<控制器文件名称>/<控制器方法名称>')
})
使用路由中间件
import { RouteType } from 'think-ts-lib'
import checkLogin from '../app/middleware/checkLogin'
export default (routes: RouteType) => {
// 在分组路由上挂载路由中间件,整个分组内的路由都会先通过这个中间件
routes.group('/api/v1', (route: RouteType) => {
route.get('/hello', 'hello/sayHello')
route.post('/world', 'hello/sayWorld')
}, checkLogin)
// 在普通路由上挂载路由中间件
routes.post('<路由地址>','<控制器文件名称>/<控制器方法名称>', checkLogin)
}
import { RouteType } from 'think-ts-lib'
import checkLogin from '../app/middleware/checkLogin'
export default (routes: RouteType) => {
// 在分组路由上挂载路由中间件,整个分组内的路由都会先通过这个中间件
routes.group('/api/v1', (route: RouteType) => {
route.get('/hello', 'hello/sayHello')
route.post('/world', 'hello/sayWorld')
}, checkLogin)
// 在普通路由上挂载路由中间件
routes.post('<路由地址>','<控制器文件名称>/<控制器方法名称>', checkLogin)
}
多种形式互相搭配可以有不一样的写法
注意事项
- 分组内部不支持嵌套分组
- 分组内部的路由不支持写中间件
import { RouteType } from 'think-ts-lib'
import checkLogin from '../app/middleware/checkLogin'
export default (routes: RouteType) => {
routes.group('/api/v1', (route: RouteType) => {
route.group('/world', 'hello/sayWorld') // 错误写法
route.get('/hello', 'hello/sayHello', checkLogin) // 错误写法
})
}
import { RouteType } from 'think-ts-lib'
import checkLogin from '../app/middleware/checkLogin'
export default (routes: RouteType) => {
routes.group('/api/v1', (route: RouteType) => {
route.group('/world', 'hello/sayWorld') // 错误写法
route.get('/hello', 'hello/sayHello', checkLogin) // 错误写法
})
}