服务端开发
在 farrow-vite-react 项目模板中,已经包含了简单的示例代码,现在让我们来解读一下服务端部分。
首先来看 server/api/greet.ts 文件
- 引入 farrow-api 去定义一个个 api
- 引入 farrow-api-server 去包含一组 api 为一个 service router
- 引入 farrow-schema 去定义 api 的 schema 结构
然后,通过 ObjectType 定义 greet api 的 input schema。此处演示了最简单的方式,不包含字段的描述
再通过 ObjectType 定义 greet api 的 output schema。此处采用了带 description 字段描述的结构,此时字段的类型需要配置在 [Type] 属性中。
用 input schema 和 output schema 定义一个 api 函数,Api({ description, input, output }, fn) ,在 fn 函数中编写这个 api 的实现。
greet 是一个普通的函数,还未跟任何 server 关联起来,我们可以通过 farrow-api-server 模块的 ApiService 函数,将多个 api 打包成 entries 对象。
ApiServer(options) 返回一个 farrow-http 的 router 对象,可以挂载到指定的 path 上。
再来看看server/api/index.ts文件。
它导入了 farrow-http 的 Router,导入了前面定义的 greet service,然后创建 Router,将 greet service 挂在到路径 /api/greet 上。
在 server/api/index.ts 模块中,我们可以按需把各个 api service 都整合起来,对外部暴露一个独立的 router 对象即可。
然后在 server/index.ts 中,创建 http 并挂在 router 上去,然后 listen(port) 启动一个 http server。
在 server/index.ts 中,我们启用了 services 和 vite,分别处理 api 和 page。
接下来,我们来看看前端开发的情况,执行命令 npm run dev 可以启动应用。