# service
服务层负责处理发起的请求, 并返回对服务端的响应。程序自动加载 service 下所有的模块。
我们来创建一个简单的用户服务类。
// @/service/system/user.js
import { BaseService, Service, Permission } from "@/cool";
@Service("sys/user")
export default extends BaseService {
@Permission('start')
start(data) {
return this.request({
url: '/start',
method: 'POST',
data
});
}
}
这是一个基于
BaseService
的基本类,默认包含page
,add
,update
,delete
,info
,list
基本请求方式。@Service
处理请求地址${baseUrl}/crm/user/${url}
@Permission
给接口添加权限。每一个service
都有对应的permission
对象,这是一个可控制接口权限的集合。
// 获取所有列表
list(params) {
return this.request({
url: '/list',
params: {
...params
}
});
}
// 以分页类型获取对应列表
page(params) {
return this.request({
url: '/page',
params: {
...params
}
});
}
// 获取选中的信息
info(params) {
return this.request({
url: '/info',
params: {
...params
}
});
}
// 更新选中的信息
update(params) {
return this.request({
url: '/update',
method: 'POST',
data: {
...params
}
});
}
// 删除选择的数据,默认使用 ids: string
delete(params) {
return this.request({
url: '/delete',
method: 'POST',
data: {
...params
}
});
}
// 添加新数据
add(params) {
return this.request({
url: '/add',
method: 'POST',
data: {
...params
}
});
}
# use
如果文件名是 index,则绑定在上一级目录下,否则绑定为当前文件名。如:
- service/common/index.js
export default class extends BaseService {
userLogin(params) {
return this.request({
url: "/comm/login",
method: "POST",
data: {
...params
}
});
}
}
// 使用
this.$service.common.userLogin({ account: "admin", password: "123456" });
- service/system/user.js
export default class extends BaseService {
move(data) {
return this.request({
url: "/move",
method: "POST",
data
});
}
}
// 使用
this.$service.system.user.move();
# proxy
可针对不同 service 层配置不同代理,示例:
// /src/service/test/index.js
import { BaseService, Service } from "@/cool/index";
@Service({
namespace: "sys/task",
proxy: '/order'
})
export default extends BaseService {}
// vue.config.js
proxy: {
'/order': {
target: 'https://order.cool-admin.com',
changeOrigin: true,
pathRewrite: { '^/order': '/' }
}
}
# request
详细看文件@/service/request.js
,根据需求处理返回结果。
# --ignore
忽略 文件
或 目录
的引入,如 /service/business/analy--fix.js