适合做公司网站的cms,wordpress 精简,天津seo数据监控,本网站正在建设升级中文章目录 HTTP 非流式请求 vs 流式请求一、核心区别 服务端代码示例#xff08;Node.js/Express#xff09;非流式请求处理流式请求处理 客户端请求示例非流式请求#xff08;浏览器fetch#xff09;流式请求处理#xff08;浏览器fetch#xff09; Python客户端示例Node.js/Express非流式请求处理流式请求处理 客户端请求示例非流式请求浏览器fetch流式请求处理浏览器fetch Python客户端示例Requests库非流式请求流式请求处理 关键特性对比注意事项 HTTP 非流式请求 vs 流式请求
一、核心区别 非流式请求传统HTTP请求 客户端发送完整请求 → 服务端处理 → 返回完整响应数据一次性完整传输连接立即关闭适用于普通API接口 流式请求Streaming Request 建立持久连接通道服务端可持续分块发送数据客户端可实时处理数据适用于实时聊天、大文件传输、日志流等场景 服务端代码示例Node.js/Express
非流式请求处理
app.get(/api/normal, (req, res) {// 一次性生成完整数据const data Array.from({length: 5}, (_, i) 数据块 ${i 1});res.json({ status: complete,data: data});
});流式请求处理
app.get(/api/stream, (req, res) {// 设置流式响应头res.setHeader(Content-Type, text/plain; charsetutf-8);res.setHeader(Transfer-Encoding, chunked);// 模拟持续发送数据let count 0;const interval setInterval(() {if (count 5) {res.write(数据块 ${count}\n);} else {clearInterval(interval);res.end(); // 结束流}}, 1000);
});客户端请求示例
非流式请求浏览器fetch
fetch(/api/normal).then(response response.json()).then(data {console.log(完整数据:, data);});流式请求处理浏览器fetch
fetch(/api/stream).then(async response {const reader response.body.getReader();const decoder new TextDecoder();while(true) {const { done, value } await reader.read();if(done) break;console.log(收到数据块:, decoder.decode(value));}});Python客户端示例Requests库
非流式请求
import requestsresponse requests.get(http://localhost:3000/api/normal)
print(完整响应:, response.json())流式请求处理
import requestswith requests.get(http://localhost:3000/api/stream, streamTrue) as r:for chunk in r.iter_content(chunk_sizeNone):if chunk:print(实时数据:, chunk.decode(utf-8))关键特性对比
特性非流式请求流式请求响应方式一次性完整返回持续分块返回内存占用需要完整加载数据按需处理数据块延迟等待完整数据处理首字节到达即可处理适用场景常规API请求实时数据/大文件传输连接持续时间立即关闭保持长连接客户端处理复杂度简单需要特殊处理逻辑 注意事项
流式请求需要设置正确的响应头Transfer-Encoding: chunked客户端需要处理连接中断和重连逻辑服务端要合理控制并发连接数浏览器端需注意跨域问题CORS配置流式传输更适合使用WebSocket/SSE等专业协议的场景需要考虑技术选型