NodeJS http模块用法示例【创建web服务器/客户端】


Posted in NodeJs onNovember 05, 2019

本文实例讲述了NodeJS http模块用法。分享给大家供大家参考,具体如下:

Node.js提供了http模块,用于搭建HTTP服务端和客户端。

创建Web服务器

/**
 * node-http 服务端
 */
let http = require('http');
let url = require('url');
let fs = require('fs');
// 创建服务器
let server = http.createServer((req, res) => {
  // 解析请求
  let pathname = url.parse(req.url).pathname; // 形如`/index.html`
  console.log('收到对文件 ' + pathname + '的请求');
  // 读取文件内容
  fs.readFile(pathname.substr(1), (err, data) => {
    if (err) {
      console.log('文件读取失败:' + err);
      // 设置404响应
      res.writeHead(404, {
        'Content-Type': 'text/html'
      });
    }
    else {
      // 状态码:200
      res.writeHead(200, {
        'Content-Type': 'text/html'
      });
      // 响应文件内容
      res.write(data.toString());
    }
    // 发送响应
    res.end();
  });
});
server.listen(8081);
console.log('服务运行在:http://localhost:8081,请访问:http://localhost:8081/index.html');

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Node http</title>
</head>
<body>
  <h1>Hi~</h1>
</body>
</html>

运行server.js,打开浏览器访问。

创建客户端

client.js

/**
 * node http 创建客户端
 */
let http = require('http');
// 请求选项
let options = {
  host: 'localhost',
  port: '8081',
  path: '/index.html'
};
// 处理响应的回调函数
let callback = (res) => {
  // 不断更新数据
  let body = '';
  res.on('data', (data) => {
    body += data;
  });
  res.on('end', () => {
    console.log('数据接收完成');
    console.log(body);
  });
}
// 向服务端发送请求
let req = http.request(options, callback);
req.end();

运行server.js,再运行client.js。

希望本文所述对大家node.js程序设计有所帮助。

NodeJs 相关文章推荐
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 NodeJs
nodejs实现UDP组播示例方法
Nov 04 #NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 #NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 #NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 #NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 #NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 #NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 #NodeJs
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
php中字符串和正则表达式详解
2014/10/23 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
python中尾递归用法实例详解
2015/04/28 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
django创建超级用户过程解析
2019/09/18 Python
Python基于当前时间批量创建文件
2020/05/07 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Python csv文件记录流程代码解析
2020/07/16 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
小学毕业家长寄语
2014/01/19 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
留学顾问岗位职责
2014/04/14 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
教师工作决心书
2015/02/04 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
入党申请书格式
2019/06/20 职场文书