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 相关文章推荐
详谈nodejs异步编程
Dec 04 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 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
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
小程序云开发实战小结
2018/10/25 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
python和php哪个更适合写爬虫
2020/06/22 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
企业为何需要商业计划书
2013/12/26 职场文书
开业主持词
2014/03/21 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
三方协议书
2015/01/27 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS