跳到主要内容

网络请求

提供高性能的多线程请求,并支持下载功能

ssf.Request 功能概述

主要用于多线程请求网络,注意这个底层使用多线程不同于js多线程,此多线程性能远快于js多线程机制,例如爬虫相关功能 也支持下载文件

接口定义

结果模型 (ResultModel)

属性名类型描述
req_urlstring请求的原始 URL
urlstring实际请求的 URL
msgstring返回的消息
codenumber状态码
cost_timenumber耗时(毫秒)
textstring响应文本内容
tempstring临时字段
bytesnumber[]响应体字节数据
status_codenumberHTTP 状态码
headerRecord<string, string>响应头信息
remote_addrstring远程地址

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/data',
header: {
'Content-Type': 'application/json'
},
timeout: 5000 // 5秒超时
};

ssf.Request.get([requestModel])
.then((results) => {
const result = results[0];
console.log(`请求URL: ${result.req_url}`);
console.log(`实际请求URL: ${result.url}`);
console.log(`返回消息: ${result.msg}`);
console.log(`状态码: ${result.code}`);
console.log(`耗时: ${result.cost_time} ms`);
console.log(`响应文本: ${result.text}`);
console.log(`临时字段: ${result.temp}`);
console.log(`响应体字节数据: ${result.bytes}`);
console.log(`HTTP状态码: ${result.status_code}`);
console.log(`响应头信息: ${JSON.stringify(result.header)}`);
console.log(`远程地址: ${result.remote_addr}`);
})
.catch((error) => {
console.error('请求失败:', error);
});

请求模型 (RequestModel)

属性名类型描述
urlstring请求的 URL
proxystring | null使用的代理服务器 URL
headerRecord<string, string> | null请求头信息
timeoutnumber | null超时时间(毫秒)
encodingstring | null编码类型
datastring | null发送的数据(POST/PUT/PATCH)
result_typestring | null结果类型
tempstring | null临时字段

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/post',
header: {
'Content-Type': 'application/json'
},
data: JSON.stringify({ key: 'value' }),
timeout: 5000 // 5秒超时
};

ssf.Request.post([requestModel])
.then((results) => {
const result = results[0];
console.log(`请求成功: ${result.url}`);
})
.catch((error) => {
console.error('请求失败:', error);
});

下载进度 (DownloadProgress)

属性名类型描述
filenamestring文件名
current_sizenumber当前已下载大小(字节)
total_sizenumber总大小(字节)

示例

// 假设我们正在监控某个下载任务
const progress = ssf.Request.download_look(1000); // 每秒检查一次
console.log(`文件名: ${progress.filename}`);
console.log(`已下载大小: ${progress.current_size} 字节`);
console.log(`总大小: ${progress.total_size} 字节`);

下载结果模型 (DownloadResultModel)

属性名类型描述
urlstring下载的 URL
codestring下载状态码
file_namestring文件名
errorstring错误信息(如果有的话)
sizestring文件大小(字节)
resumablestring是否支持断点续传

示例

const urls: string[] = [
'https://example.com/file1.zip',
'https://example.com/file2.zip'
];

ssf.Request.download(urls, '/path/to/save', 2, 3, 'http://proxy.example.com')
.then((results) => {
results.forEach(result => {
console.log(`下载结果: ${result.url}`);
console.log(`文件名: ${result.file_name}`);
console.log(`状态码: ${result.code}`);
console.log(`文件大小: ${result.size}`);
console.log(`是否支持断点续传: ${result.resumable}`);
if (result.error) {
console.error(`错误信息: ${result.error}`);
}
});
})
.catch((error) => {
console.error('下载失败:', error);
});

请求方法

GET 请求

  • 函数签名: get(pars: RequestModel[]): Promise<ResultModel[]>
  • 描述: 发起一个或多个 GET 请求。

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/data',
header: {
'Content-Type': 'application/json'
},
timeout: 5000 // 5秒超时
};

ssf.Request.get([requestModel])
.then((results) => {
results.forEach(result => {
console.log(`GET请求结果: ${result.req_url}`);
console.log(`响应状态码: ${result.status_code}`);
console.log(`响应内容: ${result.text}`);
});
})
.catch((error) => {
console.error('GET请求错误:', error);
});

POST 请求

  • 函数签名: post(pars: RequestModel[]): Promise<ResultModel[]>
  • 描述: 发起一个或多个 POST 请求。

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/post',
header: {
'Content-Type': 'application/json'
},
data: JSON.stringify({ key: 'value' }),
timeout: 5000 // 5秒超时
};

ssf.Request.post([requestModel])
.then((results) => {
results.forEach(result => {
console.log(`POST请求结果: ${result.req_url}`);
console.log(`响应状态码: ${result.status_code}`);
console.log(`响应内容: ${result.text}`);
});
})
.catch((error) => {
console.error('POST请求错误:', error);
});

HEAD 请求

  • 函数签名: head(pars: RequestModel[]): Promise<ResultModel[]>
  • 描述: 发起一个或多个 HEAD 请求。

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/head',
header: {
'Content-Type': 'application/json'
},
timeout: 5000 // 5秒超时
};

ssf.Request.head([requestModel])
.then((results) => {
results.forEach(result => {
console.log(`HEAD请求结果: ${result.req_url}`);
console.log(`响应状态码: ${result.status_code}`);
console.log(`响应头信息: ${JSON.stringify(result.header)}`);
});
})
.catch((error) => {
console.error('HEAD请求错误:', error);
});

PATCH 请求

  • 函数签名: patch(pars: RequestModel[]): Promise<ResultModel[]>
  • 描述: 发起一个或多个 PATCH 请求。

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/patch',
header: {
'Content-Type': 'application/json'
},
data: JSON.stringify({ key: 'value' }),
timeout: 5000 // 5秒超时
};

ssf.Request.patch([requestModel])
.then((results) => {
results.forEach(result => {
console.log(`PATCH请求结果: ${result.req_url}`);
console.log(`响应状态码: ${result.status_code}`);
console.log(`响应内容: ${result.text}`);
});
})
.catch((error) => {
console.error('PATCH请求错误:', error);
});

PUT 请求

  • 函数签名: put(pars: RequestModel[]): Promise<ResultModel[]>
  • 描述: 发起一个或多个 PUT 请求。

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/put',
header: {
'Content-Type': 'application/json'
},
data: JSON.stringify({ key: 'value' }),
timeout: 5000 // 5秒超时
};

ssf.Request.put([requestModel])
.then((results) => {
results.forEach(result => {
console.log(`PUT请求结果: ${result.req_url}`);
console.log(`响应状态码: ${result.status_code}`);
console.log(`响应内容: ${result.text}`);
});
})
.catch((error) => {
console.error('PUT请求错误:', error);
});

DELETE 请求

  • 函数签名: Delete(pars: RequestModel[]): Promise<ResultModel[]>
  • 描述: 发起一个或多个 DELETE 请求。

示例

const requestModel: ssf.RequestModel = {
url: 'https://api.example.com/delete',
header: {
'Content-Type': 'application/json'
},
timeout: 5000 // 5秒超时
};

ssf.Request.Delete([requestModel])
.then((results) => {
results.forEach(result => {
console.log(`DELETE请求结果: ${result.req_url}`);
console.log(`响应状态码: ${result.status_code}`);
console.log(`响应内容: ${result.text}`);
});
})
.catch((error) => {
console.error('DELETE请求错误:', error);
});

下载方法

下载文件

  • 函数签名: download(url: String[], save_path: String, concurrent_downloads?: number, retries?: number, proxy?: String): Promise<DownloadResultModel[]>
  • 描述: 下载一个或多个文件到指定路径,支持设置并发下载任务数、重试次数及是否使用代理。

示例

const urls: string[] = [
'https://example.com/file1.zip',
'https://example.com/file2.zip'
];

ssf.Request.download(urls, '/path/to/save', 2, 3, 'http://proxy.example.com')
.then((results) => {
results.forEach(result => {
console.log(`下载结果: ${result.url}`);
console.log(`文件名: ${result.file_name}`);
console.log(`状态码: ${result.code}`);
console.log(`文件大小: ${result.size}`);
console.log(`是否支持断点续传: ${result.resumable}`);
if (result.error) {
console.error(`错误信息: ${result.error}`);
}
});
})
.catch((error) => {
console.error('下载失败:', error);
});

查询下载进度

  • 函数签名: download_look(timeout: number): DownloadProgress
  • 描述: 在给定超时时间内查询当前下载任务的进度。

示例

// 假设我们正在监控某个下载任务
const progress = ssf.Request.download_look(1000); // 每秒检查一次
console.log(`文件名: ${progress.filename}`);
console.log(`已下载大小: ${progress.current_size} 字节`);
console.log(`总大小: ${progress.total_size} 字节`);