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 06 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 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 动态多文件上传
2009/01/18 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php命名空间学习详解
2014/02/27 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
numpy自动生成数组详解
2017/12/15 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
应届生保险求职信
2013/11/11 职场文书
体育教师求职信
2014/06/30 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
辞职信范文大全
2015/03/02 职场文书
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技