@polyv/request-plugin-polyv-business
v2.8.1
Published
用途:保利威业务数据插件,用于在请求中自动插入业务相关的参数。
Readme
PolyvBusinessRequestPlugin
用途:保利威业务数据插件,用于在请求中自动插入业务相关的参数。
PS:该插件仅适用于 api.polyv.net 下的接口
实例化参数
| 参数名 | 用途 | 类型 | 默认值 |
| ------------------ | ------------------ | ---------- | ------ |
| usePolyvBusiness | 是否使用业务数据 | boolean | true |
| getBusinessData | 获取业务数据的方法 | function | - |
请求选项
| 参数名 | 用途 | 类型 | 默认值 |
| ------------------ | ---------------- | ------------------- | ------ |
| usePolyvBusiness | 是否使用业务数据 | boolean | true |
| businessData | 业务数据 | PolyvBusinessData | - |
业务数据类型
PolyvBusinessData 类型如下:
| 参数名 | 用途 | 类型 | 默认值 |
| ------------ | --------------- | -------- | ------ |
| sourceType | 来源类型 | string | - |
| sourceId | 来源 id | string | - |
| channelId | 频道号 | string | - |
| viewerId | 用户 id | string | - |
| unionId | 用户系统唯一 id | string | - |
使用方式
import { PolyvRequest } from '@polyv/request-core';
import { PolyvBusinessRequestPlugin } from '@polyv/request-plugin-polyv-business';
// 自定义获取业务数据的方法
const requester = new PolyvRequest({
requestPlugins: [
new PolyvBusinessRequestPlugin({
getBusinessData: async options => {
// 可以在这里实现自定义的业务数据获取逻辑
return {
sourceType: 'yourSourceType',
sourceId: 'yourSourceId',
channelId: 'yourChannelId',
viewerId: 'yourViewerId',
unionId: 'yourUnionId',
};
},
}),
],
});
// 在某个请求中禁用业务数据
requester.get(
'/api/data',
{},
{
usePolyvBusiness: false,
},
);
// 在某个请求中使用特定的业务数据
requester.get(
'/api/data',
{},
{
businessData: {
sourceType: 'specificSourceType',
sourceId: 'specificSourceId',
},
},
);保利威域名配置
提供 PickDomainInfo 范型生成域名配置类型,formatDomainInfo 格式化域名配置,如果没有传入相关的配置则使用内部默认值。
import { type PickDomainInfo } from '@polyv/request-plugin-polyv-business';
type MyDomainInfo = PickDomainInfo<'chatWsDomain' | 'chatApiDomain' | 'polyvApiDomain'>;
const myDomainInfo: MyDomainInfo = { ... };
formatDomainInfo(myDomainInfo).chatApiDomain;插件处理逻辑
- 插件会在请求中自动插入业务相关的参数,如
sourceType、sourceId、channelId、viewerId、unionId等 - 插件会根据请求的 URL 判断需要插入哪些参数:
- 对于
/live/v4/watch/common接口,插入sourceType和sourceId - 对于
/live/v4/watch/viewer接口,插入sourceType、sourceId、viewerId和userId - 对于
/live/v4/channel接口,插入channelId - 对于其他接口,插入
channelId和viewerId
- 对于
- 如果你使用了
@polyv/request-plugin-authorize-token令牌插件,本插件会根据 URL 判断是否使用 token 和 tokenField:- 对于
/live/v4/watch/common接口,会自动插入useToken为 false 禁用 token 插入 - 对于
/live/v3接口,会将tokenField设置为token,其他接口设置为viewerToken
- 对于
import { PolyvRequest } from '@polyv/request-core';
import { AuthorizeTokenRequestPlugin } from '@polyv/request-plugin-authorize-token';
import { PolyvBusinessRequestPlugin } from '@polyv/request-plugin-polyv-business';
const requester = new PolyvRequest({
baseUrl: 'https://api.polyv.net',
requestPlugins: [
new AuthorizeTokenRequestPlugin({
getTokenInfo: () => {
return {
// 只需要传入 token 即可
token: 'yourToken',
};
},
}),
new PolyvBusinessRequestPlugin({
getBusinessData: async options => {
// 可以在这里实现自定义的业务数据获取逻辑
return {
channelId: 'yourChannelId',
viewerId: 'yourViewerId',
};
},
}),
],
});
// 不会插入 token
requester.get('/live/v4/watch/common/xxx/xx/x', {});
// 会插入 token,token 字段为 'token'
requester.get('/live/v3/xxx/xx/x', {});
// 会插入 token,token 字段为 'viewerToken'
requester.get('/live/v4/xxx/xx/x', {});