
Research
/Security News
Popular Go Decimal Library Targeted by Long-Running Typosquat with DNS Backdoor
A long-running Go typosquat impersonated the popular shopspring/decimal library and used DNS TXT records to execute commands.
@bbfe/data-provider
Advanced tools
[TOC]
npm install @bbfe/data-provider
request请求发起前, response 接收到正常响应时, error 接收响应异常时参考examples/dataService.js 示例, 运行examples命令
npm run dev
请注意:拦截器的每个切面接受请求config参数, 应该返回一个 Promise, 以完成后续流程。
// example/interceptors/fixParams.js
export default {
request: async (config) => {
// 给所有的get请求添加一个_t参数
let baseParams = {
_t: +new Date()//1314
};
return new Promise((resolve, reject) => {
let assignTarget = config.method === 'get' ? 'params' : 'data';
config[assignTarget] = config[assignTarget] || {};
Object.assign(config[assignTarget], baseParams);
resolve(config);
})
},
response: async (config) => {
// return Promise
},
error: async (config) => {
// return Promise
}
}
// example/dataService.js
import DataProvider from '@bbfe/data-provider';
import fixParamsInterceptor from './interceptors/FixParams';
// 创建一个DataProvider实例
var service = new DataProvider();
// 面向切面: 按顺序组装拦截器
service
.interceptors.request.use(fixParamsInterceptor.request)
.interceptors.error.use(errorProcessorInterceptor.error)
data-provider 在配置中提供了一个开关 comboRequestEnabled 来决定是否合并频发请求。
可以在data-provider.request(config) 的基础上封装语法糖, 简化config的传入操作。
以封装的data-source-gateway 为例:
// example/dataService.js
var DataService = {
post: function(uri, data) {
var config = {
url: uri,
method: 'post',
// to methods of that instance.
baseURL: baseURL,
// data仅用于post请求, 放在http请求体中
data: data
};
return DataService.request(config);
},
get: function(uri, params) {
var config = {
url: uri,
// to methods of that instance.
baseURL: baseURL,
method: 'get',
// params仅用于get请求, 会拼接在url后面
params: params,
// 默认get请求可合并
comboRequestEnabled: true
};
return DataService.request(config);
},
// let {url, baseURL, method, params, comboRequestEnabled, paramSerializerJQLikeEnabled} = config
request: function(config) {
// paramSerializerJQLikeEnabled: 默认开启用jquery.param进行请求参数的序列化
let mixedConfig = { paramSerializerJQLikeEnabled, ...config };
return new Promise((resolve, reject) => {
service.request(mixedConfig)
.then(data => { resolve(data) }, err => { reject(err); })
});
},
start: () => {
service.start();
},
stop: () => {
service.stop();
}
}
request开始一个请求流程start 开始接受请求任务stop 停止接受请求处理任务createError 创建一个Error类型的异常createComboPromise合并promiseErrorType
Deferred 一个延迟对象的构造函数
FAQs
request manager with AOP interceptors
The npm package @bbfe/data-provider receives a total of 6 weekly downloads. As such, @bbfe/data-provider popularity was classified as not popular.
We found that @bbfe/data-provider demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
A long-running Go typosquat impersonated the popular shopspring/decimal library and used DNS TXT records to execute commands.

Research
Active npm supply chain attack compromises @antv packages in a fast-moving malicious publish wave tied to Mini Shai-Hulud.

Security News
/Research
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.