Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
小程序 网络请求 API(request/upload/download) 的二次封装,适配多个小程序平台。
# npm
npm i mp-network
# yarn
yarn add mp-network
# pnpm
pnpm add mp-network
由于 原生小程序不支持通过 包管理工具安装的方式,从 node_modules
中引入包,
需要手动从 dist/index.cjs
中复制代码,到你的本地项目文件中后,再进行引入。
注:
dist/index.cjs
是 commonjs 格式的代码文件
引入
import { download, request, upload } from 'mp-network'
示例1:promise
// 发起 get 请求
request.get('https://example.com/a', { a: 1 })
.then((response) => {
console.log(response)
})
// 发起 post 请求
request.post('https://example.com/b', { b: 1 })
.then((response) => {
console.log(response)
})
// 上传文件
upload('https://example.com/upload', { filePath: '/local/1.txt', name: '1.txt' })
.then((response) => {
console.log(response)
})
// 下载文件
download('https://example.com/download', 'local/1.txt')
.then((response) => {
console.log(response)
})
示例2:async/await
async function fetchData() {
const response = await request.get('https://example.com')
console.log(response)
}
示例3:取消请求
const promise1 = request.get('https://example.com')
promise1.then((response) => console.log(response))
// 取消请求
promise1.abort()
// ----
// async / await
const promise2 = request.get('https://example.com')
// 取消请求
promise2.abort()
const response = await promise2
示例4:上传进度
const uploadPromise = upload('https://example.com/upload', { filePath: '/local/1.txt', name: '1.txt' })
uploadPromise.onProgressUpdate((res) => {
// res.progress 上传进度百分比
// res.totalBytesSent 已经上传的数据长度,单位 Bytes
// res.totalBytesExpectedToSend 预期需要上传的数据总长度,单位 Bytes
})
示例5: 下载进度
const downloadPromise = download('https://example.com/download')
downloadPromise.onProgressUpdate((res) => {
// res.progress 下载进度百分比
// res.totalBytesWritten 已经下载的数据长度,单位 Bytes
// res.totalBytesExpectedToWrite 预期需要下载的数据总长度,单位 Bytes
})
示例6: 请求拦截器
// 请求体拦截器
request.interceptor.request.use((config) => {
// do something
// 必须返回 config
return config
})
request.interceptor.response.use((config) => {
// do something
// 返回处理后的数据
return config.data
})
MPRequest
实例
request.get(url[, data, options]): RequestPromise
request.post(url[, data, options]): RequestPromise
request.put(url[, data, options]): RequestPromise
request.head(url[, data, options]): RequestPromise
request.connect(url[, data, options]): RequestPromise
request.trace(url[, data, options]): RequestPromise
参数说明
url
必填。请求地址。 string
data
选填。请求数据。 string/object/ArrayBuffer
options
选填。请求设置 RequestOptions
返回值说明
RequestPromise
是一个 promise, 支持以下方法:
promise.then(fulfilled)
fulfilled(response) 说明
字段 | 描述 |
---|---|
data | 服务器返回的数据 |
statusCode | 服务器返回的http状态码 |
header | 服务器返回的 header 响应头 |
cookies | 服务器返回的 cookies |
profile | 请求调试信息 |
promise.catch(rejected)
rejected(error) 说明
字段 | 描述 |
---|---|
errno | 错误码 |
errMsg | 错误信息 |
promise.abort()
中止请求promise.onChunkReceived(listener)
监听 Transfer-Encoding Chunk Received 事件。promise.offChunkReceived(listener)
取消监听promise.onHeadersReceived(listener)
监听 HTTP Response Header 事件promise.offHeadersReceived(listener)
取消监听request.interceptor
拦截器
request.interceptor.request.use(fulfilled, rejected)
请求体拦截器request.interceptor.response.use(fulfilled, rejected)
响应体拦截器文件上传请求
upload(url, data[, options]): UploadPromise
参数说明
url
必填。上传请求地址. string
data
必填。上传文件时发送的数据, object
字段 | 必填 | 描述 |
---|---|---|
filePath | 是 | 要上传文件资源的路径 (本地路径) |
name | 是 | 文件对应的 key |
[string] | 否 | 附加其他的数据 |
options
选填。 请求设置。UploadRequestOptions
返回参数说明
UploadPromise
是一个 promise,支持以下方法:
promise.then(fulfilled)
fulfilled(response)
字段 | 描述 |
---|---|
data | 服务器返回的数据 |
statusCode | 服务器返回的http状态码 |
profile | 请求调试信息 |
promise.catch(rejected)
rejected(error) 说明
字段 | 描述 |
---|---|
errno | 错误码 |
errMsg | 错误信息 |
promise.abort()
中止请求promise.onHeadersReceived(listener)
监听 HTTP Response Header 事件promise.offHeadersReceived(listener)
取消监听promise.onProgressUpdate(listener)
监听上传进度
listener(res) res 说明:
字段 | 描述 |
---|---|
progress | 上传进度百分比 |
totalBytesSent | 已经上传的数据长度,单位 Bytes |
totalBytesExpectedToSend | 预期需要上传的数据总长度,单位 Bytes |
promise.offProgressUpdate(listener)
取消监听文件上传请求
download(url[, filePath, options]): DownloadPromise
参数说明
url
必填。下载请求地址. string
filePath
选填。指定文件下载后存储的路径 (本地路径), string
options
选填。 请求设置。DownloadRequestOptions
返回参数说明
DownloadPromise
是一个 promise,支持以下方法:
promise.then(fulfilled)
fulfilled(response)
字段 | 描述 |
---|---|
tempFilePath | 临时文件路径 (本地路径) |
filePath | 用户文件路径 (本地路径)。 |
statusCode | 服务器返回的http状态码 |
profile | 请求调试信息 |
promise.catch(rejected)
rejected(error) 说明
字段 | 描述 |
---|---|
errno | 错误码 |
errMsg | 错误信息 |
promise.abort()
中止请求promise.onHeadersReceived(listener)
监听 HTTP Response Header 事件promise.offHeadersReceived(listener)
取消监听promise.onProgressUpdate(listener)
监听下载进度
listener(res) res 说明:
字段 | 描述 |
---|---|
progress | 下载进度百分比 |
totalBytesWritten | 已经下载的数据长度,单位 Bytes |
totalBytesExpectedToWrite | 预期需要下载的数据总长度,单位 Bytes |
promise.offProgressUpdate(listener)
取消监听createRequest(presetOptions: RequestOptions): MPRequest
创建一个 请求实例, presetOptions
作为预设请求设置,会与请求接口的options
进行合并。
const customRequest = createRequest({
baseUrl: 'http://example.com/',
timeout: 60000,
dataType: 'json',
header: {
'content-type': 'application/json'
}
})
// 发起 post 请求
customRequest.post('/b', { b: 1 })
.then((response) => {
console.log(response)
})
createUpload(presetOptions: UploadRequestOptions): Upload
返回一个 新的 upload
函数,presetOptions
作为预设请求设置,会与 upload 函数中的 options
进行合并。
const customUpload = createUpload({
baseUrl: 'http://example.com/',
timeout: 60000
})
// 上传文件
customUpload('/upload', { filePath: '/local/1.txt', name: '1.txt' })
.then((response) => {
console.log(response)
})
createDownload(presetOptions: DownloadRequestOptions): Download
返回一个新的 download
函数,presetOptions
作为预设请求设置,会与 download 函数中的 options
进行合并。
const customDownload = createDownload({
baseUrl: 'http://example.com/',
timeout: 60000
})
// 下载文件
customDownload('/download', 'local/1.txt')
.then((response) => {
console.log(response)
})
字段 | 类型 | 描述 |
---|---|---|
baseUrl | string | 请求路径公共前缀 |
timeout | number | 超时时间,单位为毫秒。默认值为 60000 |
header | object | 设置请求的 header |
dataType | string | 返回的数据格式 |
responseType | string | 响应的数据类型 |
header | object | 设置请求的 header |
enableHttp2 | boolean | 开启 http2 |
enableQuic | boolean | 开启 quic |
enableCache | boolean | 开启 cache |
enableHttpDNS | boolean | 是否开启 HttpDNS 服务。 |
httpDNSServiceId | string | HttpDNS 服务商 Id。 |
enableChunked | boolean | 开启 transfer-encoding |
forceCellularNetwork | boolean | wifi下使用移动网络发送请求 |
字段 | 类型 | 描述 |
---|---|---|
baseUrl | string | 请求路径公共前缀 |
timeout | number | 超时时间,单位为毫秒。 |
header | object | 设置请求的 header |
字段 | 类型 | 描述 |
---|---|---|
baseUrl | string | 请求路径公共前缀 |
timeout | number | 超时时间,单位为毫秒。 |
header | object | 设置请求的 header |
filePath | string | 要上传文件资源的路径 (本地路径) |
name | string | 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容 |
see request
FAQs
小程序 网络请求接口二次封装, request/upload/download,适配多个平台
We found that mp-network demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.