跳转内容

Restful 控制器

熟悉后端开发的,尤其是熟悉Spring/Nest.js的,应该对控制器这个概念不陌生。

unioc中,控制器是用来创建路由的,并且可以包含多个路由。

创建控制器

ts
import { 
Get
,
RestController
} from 'unioc/web'
@
RestController
()
export class
AppController
{
@
Get
('/')
async
index
() {
return 'Hello World' } }

然后,在你的应用主入口中引用这个控制器:

ts
import { 
ExpressApp
} from 'unioc/web-express'
// 引入控制器 import './app.controller' async function
bootstrap
():
Promise
<void> {
// 下面是你的App启动逻辑,比如你想创建一个Express应用 const
app
= new
ExpressApp
()
// 启动应用 await
app
.
run
(3000)
}
bootstrap
()

上面是一个创建Express应用的示例,你也可以创建Koa应用,然后仅需要一个简单的导入语句引入到主入口,即可以被unioc自动发现,并根据你的控制器自动创建路由。

Vite结合使用

uniocVite结合使用时,可以使用import.meta.glob会非常方便,相当于变相地实现Spring自动扫包@ComponentScan类似的特性。

它是仅在Vite中可用的特性,可以传入一个glob路径,就无需手动引入控制器了。

ts
/// <reference types="vite/client" />
import { 
ExpressApp
} from 'unioc/web-express'
// 这里的意思就是把 ./controllers 目录下的所有ts文件都自动引入进来, // 这样就不用一个个import了,非常非常方便 ✨ import.meta.
glob
('./controllers/*.ts', {
eager
: true })
async function
bootstrap
():
Promise
<void> {
// 下面是你的App启动逻辑,比如你想创建一个Express应用 const
app
= new
ExpressApp
()
// 启动应用 await
app
.
run
(3000)
}
bootstrap
()

NOTE

import.meta.glob 文档请参考 Vite 官方文档

贡献者

页面历史