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中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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
BBS(php &amp; mysql)完整版(七)
2006/10/09 PHP
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
php导入导出excel实例
2013/10/25 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
python类继承用法实例分析
2014/10/10 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Django数据库迁移常见使用方法
2020/11/12 Python
举例说明类变量和实例变量的区别
2016/06/30 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
高中化学教学反思
2014/01/13 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
英文升职感谢信
2015/01/23 职场文书
小学英语教学反思范文
2016/02/15 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书