用资源的方式编写前端 API 层
传统的调用 API 的代码使用诸如 fetch、axios 等 ajax 调用框架,如:
await axios.get('/users')这里说的用资源编排的方式,类似于后端开发者熟知的 Active Record 模式:
// 列出用户
await User.list()
// 创建用户
await User.create({ name: 'Jim', age: 18 })
// 查看用户
user = await User.find(1)
// 重载用户数据
await user.reload()
// 更新用户
await user.update({ age: user.age + 1 })
// 另一种更新用户的方法
user.age += 1
await user.save()
// 你也可以通过这样创建用户
user = User.new()
user.name = 'Jim'
user.age = 18
await user.save()
// 删除用户
await user.destroy()将 src 目录的代码拷贝到项目中即可。模块(如上面的 User)可参考示例 demo/user.js.
- vue 2.x
- axios
- lodash
- 也许会有其他
可以通过模块的 use 方法快捷定义接口,参考 demo/user.js 的部分代码:
User.use('list', { scope: 'static' })
User.use('find', { scope: 'static' })
User.use('save')
User.use('reload')
User.use('destroy')其中默认定义实例方法,标注 { scope: 'static' } 的定义静态方法:
await User.list()
await new User().reload()通过此类方式生成的接口其路径、参数要满足一定的范式,举例如下:
- 
返回用户列表: GET /users --- Response --- { "users": [ // ... ] } 
- 
创建用户: POST /users { "user": { // ... } } --- Response --- { "user": { // ... } } 
- 
查看用户: GET /users/:id --- Response --- { "user": { // ... } } 
- 
更新用户: PUT /users/:id { "user": { // ... } } --- Response --- { "user": { // ... } } 
- 
删除用户: DELETE /users/:id 
基本如此。当然可以自定义和调整,相关代码见 src/defines.js 的全部代码和 src/base.js 的部分代码。
MIT