Appearance
服务接口
@mbjia/services
服务接口
服务接口来自 @mbjia/services,主要封装素材、上传、权益、AI 搜索、淘宝/轻应用和模板作品相关请求。
快速索引
| 模块 | 典型接口 | 说明 |
|---|---|---|
| 统一返回 | HttpDTO<T> | 服务端通用响应结构。 |
| 素材查询 | reqAssetItems | 查询素材列表。 |
| 创建素材 | reqAssetCreate | 上传完成后创建素材记录。 |
| OSS Token | reqOSSKey | 获取上传凭证。 |
| 用户权益 | reqUserInfo、reqRights | 会员、点数和权益判断。 |
| AI 搜索 | createAiSearchTask、submitAiSearchTask | 创建、提交、轮询 AI 搜索任务。 |
| OSS 上传工具 | uploadOSS | 获取 token、分片上传、可选创建素材。 |
| 视频拆分 | splittingMediaCost、createSplittingJob | 查询扣费、创建拆分任务、提交和轮询。 |
| 视频抓取 | videoFetcher、getVideoFetcher、createDownloadVideoJobId | 抖音/视频链接抓取、下载和结果轮询。 |
| 混剪作品 | reqCreateMixClipProduct | 创建混剪作品。 |
| HTTP 客户端 | Http、CancelToken、isCancel | 底层请求封装和取消请求能力。 |
接口速查
| 函数 | 入参 | 返回值 | 用途 |
|---|---|---|---|
reqAssetItems | IAssetSearch | AssetListResponse | 查询素材列表。 |
reqAssetCreate | IAssetCreate | HttpDTO | 创建素材记录。 |
reqOSSKey | { upload_type; file_num } | StsTokenResponse | 获取 OSS 上传凭证。 |
reqUserInfo | 业务用户参数 | 用户信息 | 获取当前用户信息。 |
reqRights | - | 权益信息 | 查询会员/点数权益。 |
reqVipBenefitDetail | { type } | 会员权益详情 | 查询会员套餐权益。 |
reqRenderCharge | { record_ids } | 扣费/渲染信息 | 下载或渲染前权益判断。 |
createAiSearchTask | AI 搜索任务参数 | 任务信息 | 创建 AI 搜索任务。 |
submitAiSearchTask | { task_id_list } | 提交结果 | 提交 AI 搜索任务。 |
pollingAiSearchListByTaskId | 任务 id 和分页 | 搜索结果 | 轮询 AI 搜索结果。 |
uploadOSS | File[] | FileList、上传选项 | 上传结果 | OSS 上传,可选创建素材。 |
splittingMediaCost | 拆分参数 | 扣费信息 | 查询镜头拆分所需点数。 |
createSplittingJob | 拆分任务参数 | 任务信息 | 创建拆分任务并扣费。 |
submitSplittingJob | 任务参数 | 提交结果 | 提交拆分任务。 |
getSplittingDetail | 任务参数 | 拆分详情 | 轮询拆分结果。 |
videoFetcher | 视频链接参数 | 抓取任务 | 提交视频抓取。 |
getVideoFetcher | 任务参数 | 抓取详情 | 轮询视频抓取结果。 |
getFetcherPoints | { user_asset_id; task_type? } | 点数信息 | 查询视频抓取/下载所需点数。 |
createDownloadVideoJobId | 下载任务参数 | 任务信息 | 提交视频下载任务。 |
getVideoDownloadResult | 任务参数 | 下载结果 | 查询视频下载结果。 |
统一返回
服务端原始响应:
ts
type HttpDTO<T> = {
errno: number
errormsg: string
data: T
}HTTP 客户端
@mbjia/services 默认通过 Http() 获取单例 RequestClient。
ts
import { Http, CancelToken, isCancel } from '@mbjia/services'
const data = await Http().post('/path/to/api', { id: 1 })导出:
| 名称 | 类型 | 说明 |
|---|---|---|
Http | () => RequestClient | 获取请求客户端单例。 |
CancelToken | axios.CancelToken | Axios 取消请求 token。 |
isCancel | axios.isCancel | 判断是否取消请求。 |
RequestClient | class | 内部请求客户端,主要提供 post。 |
formify | (data: object) => FormData | 对象转 FormData。 |
errorHandler | (error) => void | false | 统一错误处理函数。 |
RequestClient.post:
ts
post<T>(
url: string,
data?: any,
config?: AxiosRequestConfig,
options?: { cancelRequest: () => void }
): Promise<T>说明:
| 行为 | 说明 |
|---|---|
baseURL | 来自 @mbjia/utils 导出的 env.host。 |
timeout | 2 分钟。 |
| 客户端桥接 | 存在 window.bridge.call 时使用客户端代理请求。 |
| 取消请求 | 未传 cancelToken 时内部会创建一个。 |
素材查询
ts
reqAssetItems(params: IAssetSearch, cancelToken?: CancelToken)入参:
ts
interface IAssetSearch {
asset_cate: number
asset_group?: string
asset_type: number | number[]
asset_style?: number
dir_id?: string
name?: string
order_field?: string
order_type?: number
page: number
page_size: number
cid?: string[] | string
industry_id?: string
scale?: number[]
replaceable_elements_number?: number
searchType?: string
searchRange?: string
aiSearchCount?: number
tag_id_list?: string[]
}示例:
ts
const data = await reqAssetItems({
asset_cate: 1,
asset_type: [50, 51],
page: 1,
page_size: 20,
order_field: 'create_time',
order_type: 3,
})创建素材
ts
reqAssetCreate(params: IAssetCreate)ts
interface IAssetCreate {
asset_style: number
asset_type: number
dir_id?: number
name: string
status?: number
url: string
rotate?: number
from: 1 | 2
is_need_rotate?: boolean
}获取 OSS Token
ts
reqOSSKey({
upload_type: 'mbjia_user_file',
file_num: 1,
})返回:
ts
{
token: {
access_key_id: string
access_key_secret: string
bucket: string
domain: string
expiration: string
file_names: string[]
path_prefix: string
region: string
security_token: string
}
}用户权益
ts
reqUserInfo(params)
reqRights()
reqVipBenefitDetail({ type })
reqRenderCharge({ record_ids })这些接口用于会员、下载次数、点数扣费和权益判断。
AI 搜索
AI 搜索一般由 MbjiaApiManager 内部组合调用。
ts
createAiSearchTask({
content: '商品近景',
type: 0,
dir_id: '123',
organize_type: 1,
organize_id: 10,
search_range: 'current',
})ts
submitAiSearchTask({
task_id_list: ['task-id'],
})ts
pollingAiSearchListByTaskId({
task_id: 'task-id',
page: 1,
page_size: 20,
})注意:源码类型里 pollingAiSearchListByTaskId 标注为 { task_id_list: string[] },但实际调用传的是 task_id。文档按实际使用提示。
淘宝/轻应用接口
ts
reqTaobaoStoreProductDetail({ goods_id })
reqTaobaoSearchFolder({ parent_id })
reqTaobaoSearchMaterial(params)
reqLightApplicationFolder({ parent_id })
reqLightApplicationMaterial(params)素材搜索入参继承 IAssetSearch,并要求:
ts
interface TaobaoSearchMaterialReq extends IAssetSearch {
asset_type: number
page: number
page_size: number
parent_id?: number
name: string
}视频拆分接口
这些接口被 MediaSplittingFlow 和 MediaSplittingModal 使用。
ts
splittingMediaCost(params)
createSplittingJob(params)
submitSplittingJob(params)
getSplittingDetail(params)| 函数 | 请求路径 | 说明 |
|---|---|---|
splittingMediaCost | /veasset/video-split/get-cost | 查询拆分扣费。 |
createSplittingJob | /veasset/video-split/create-job | 创建拆分任务并扣费。 |
submitSplittingJob | /veasset/video-split/submit | 提交拆分任务。 |
getSplittingDetail | /veasset/video-split/detail | 查询拆分详情。 |
视频抓取接口
这些接口被 VideoCaptureFlow 和 VideoCaptureModal 使用。
ts
videoFetcher(params)
getVideoFetcher(params)
getFetcherPoints({ user_asset_id, task_type })
createDownloadVideoJobId(params)
getVideoDownloadResult(params)| 函数 | 请求路径 | 说明 |
|---|---|---|
videoFetcher | /workbench/asset/video-fetcher | 提交视频抓取。 |
getVideoFetcher | /workbench/asset/get-video-fetcher | 查询抓取结果。 |
getFetcherPoints | /workbench/asset/get-video-fetcher-need-point | 查询抓取或下载所需点数。 |
getBatchCost | /veasset/video-split/get-batch-cost | 批量拆分扣费。 |
getAssetIds | /veasset/video-split/batch-filter | 批量拆分前过滤素材 id。 |
createDownloadVideoJobId | /workbench/asset/download-video | 提交视频下载任务。 |
getVideoDownloadResult | /workbench/asset/get-video-download-result | 查询视频下载结果。 |
getBatchCostDetail | /veasset/video-split/get-cost-log | 查询批量拆分扣费明细。 |
batchCreateJob | /veasset/video-split/batch-create-job | 创建批量拆分任务。 |
下载任务参数:
ts
interface CreateDownloadVideoParams {
user_asset_id: string
retry?: boolean
task_source: string
record_id?: string
}混剪接口
ts
reqCreateMixClipProduct(params)| 函数 | 请求路径 | 说明 |
|---|---|---|
reqCreateMixClipProduct | /mix_clip/products/create | 创建混剪作品。 |
模块路径说明:
| 模块 | 说明 |
|---|---|
mixed | 混剪接口模块。 |
captrueVideo | 视频抓取接口模块;源码目录名为 captrueVideo。 |
模板与作品
创建作品:
ts
interface CreateProductParams {
art_name: string
cover_image?: string
music_url?: string
replaceable_json: string
source?: number
sticker_canvas_data?: string
template_type?: number
watermark_list: string
template_id: string
is_taobao: number
}返回:
ts
interface CreateProductResponse {
product: {
art_name: string
cover_image: string
create_time: number
id: number
music_url: string
replaceable_json: string
template_id: number
uid: string
update_time: number
}
}OSS 上传工具
uploadOSS 会完成获取 STS Token、OSS 分片上传、断点续传和可选创建业务素材。
ts
await uploadOSS(files, {
createAssetOptions: {
assetType: 50,
dirId: '0',
rotate: false,
},
uploadType: 'mbjia_user_file',
onProgress(percent, status, abort) {
console.log(percent)
},
})返回值依上传路径而不同;底层 VeUploader.OssMultipartUpload_ 返回:
ts
interface VeAssetUploadRet {
status: boolean
file_name: string
result?: unknown
name?: unknown
errInfo?: unknown
}