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的url截取模块url-extract的使用实例
Nov 18 NodeJs
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
May 15 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
举例详解PHP脚本的测试方法
2015/08/05 PHP
php blowfish加密解密算法
2016/07/02 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
Python中表示字符串的三种方法
2017/09/06 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
Django如何批量创建Model
2020/09/01 Python
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
ORACLE第二个十问
2013/12/14 面试题
高级电工工作职责
2013/11/21 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python