NodeJS Web模块

本文介绍nodeJS的http模块的基本用法,实现简单服务器和客户端

经典Web架构

  • Client:客户端一般指浏览器,通过HTTP协议向服务器发送请求(request)
  • Server:服务器,接受客户端请求,并向服务器发送响应数据(response),主流的有Apache、Nginx、IIS
  • Business:业务逻辑层,核心应用逻辑所在,与数据库、文件系统、外部程序交互
  • Data:数据层,主要由数据库组成

Node服务器

server.js

var http = require('http')
var fs = require('fs')
var url = require('url')
// 创建服务器
http.createServer(function (request, response) {// 解析请求,包括文件名var pathname = url.parse(request.url).pathname// 日志输出请求的文件名console.log("Request for "+pathname+" received.")// 从文件系统中读取请求的内容fs.readFile(pathname.substr(1),function (err, data) {if (err){console.error(err)//返回错误信息404response.writeHead(404,{"Content-Type":"text/html"})}else{// 请求成功response.writeHead(200,{"Content-Type":"text/html"})response.write(data.toString())}response.end()})
}).listen(8000) //在8000端口监听console.log("Server is running at http://127.0.0.1:8000")

在同一目录下新建index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Sample Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

运行server.js之后,在浏览器中访问http://127.0.0.1:8000/index.html,就会返回helloworld的页面

Node客户端

client.js

var http = require('http')
// 配置参数
var options = {host:'localhost',port:'8000',path:'/index.html'
}// 向服务器发送请求
var req = http.request(options, function (response) {var body = ''// 接受数据块response.on('data',function (data) {body += data})response.on('end',function () {console.log(body)})
})
req.end()

服务器在运行的同时,再开一个终端

$ node client.js

输出为:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Sample Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

GET请求

var http = require('http')
var url = require('url')http.createServer(function (req, res) {res.writeHead(200, {'Content-Type': 'text/plain charset=utf-8'})// 解析url参数var params = url.parse(req.url,true).queryres.write('网站名: '+params.name)res.write('\n')res.write('网站url: '+ params.url)res.end()
}).listen(8000)

浏览器中访问http://localhost:8000/?name=百度&url=www.baidu.com

得到响应

POST请求

node没有设置专门对post的请求,一直等待用户输入开销比较大,而是采用了监听用户向服务器发送数据写入的方式实现

var http = require('http')
var fs = require('fs')
var querystring = require('querystring')var postHTML
fs.readFile('index.html',function (err,data) {if (err){console.error(err)}else{postHTML = data}
})http.createServer(function (req, res) {var data = ""req.on('data', function (chunk) {data += chunk})// 数据读完之后解析req.on('end',function () {// 解析参数console.log(data)data = querystring.parse(data)// 写响应头res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'})if (data['name'] && data['url']){res.write("网站名"+ data['name'])res.write("<br>")res.write("网站url"+ data['url'])}else{res.write(postHTML)}res.end()})
}).listen(8000)

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Sample Page</title>
</head>
<body>
<form method="post">网站名:<input name="name"><br>网站url:<input name="url"><br><input type="submit">
</form>
</body>
</html>

访问localhost:8000后输入表单内容并提交,服务器会给出相应

转载于:https://www.cnblogs.com/fanghao/p/7818367.html

NodeJS Web模块相关推荐

  1. NodeJS常用模块介绍

    收集了NodeJS开发中常用的一些模块. MVC框架 - Express Express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站.Express框架建立在Nodejs内置的Ht ...

  2. node web模块 (服务器端和客户端)

    node web模块 web服务器 web服务器指网站服务器,指驻留在因特网上的某种程序,web浏览器的基本功能,提供信息浏览服务 web支持服务器端的脚本语言,通过脚本语言从数据库获取数据,将结果返 ...

  3. Nodejs的模块系统以及require的机制

    一.简介 Nodejs 有一个简单的模块加载系统.在 Nodejs 中,文件和模块是一一对应的(每个文件被视为一个独立的模块),这个文件可能是 JavaScript 代码,JSON 或编译过的C/C+ ...

  4. Node.js:Web模块、文件系统

    一.web模块 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL,与客户端的网络 ...

  5. DS, DB, WEB模块的安装(环境搭建) 学习日志 2012年7月10日

    一.关于统筹模块的安装步骤: 1.将安装包以smsds用户二进制方式上传至"/home/smsds"目录. 2.以smsds用户登录系统. 3.删除"/home/smsd ...

  6. spring源码分析之spring-web web模块分析

    0 概述 spring-web的web模块是更高一层的抽象,它封装了快速开发spring-web需要的基础组件.其结构如下: 1. 初始化Initializer部分 1.1  Servlet3.0 的 ...

  7. Node.js Web 模块

    Node.js Web 模块 什么是 Web 服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议. ...

  8. nodejs web应用服务器搭建(一):跑起你的服务器

    前言 本章会分四部分来讲,在开始教程之前请准备好相关基础知识 & 文档 JavaScript基础:AMD概念:ES5 | ES6语法:(这些没弄清楚估计往下看也看不下去) nodejs 环境搭 ...

  9. spring boot web_SpringBoot2.x入门:引入web模块

    前提 这篇文章是<SpringBoot2.x入门>专辑的「第3篇」文章,使用的SpringBoot版本为2.3.1.RELEASE,JDK版本为1.8. 主要介绍SpringBoot的we ...

最新文章

  1. 有关包络Spectral Envelope的疑问
  2. DataGridView 写入到EXCEL
  3. ubuntu 配置 静态ip
  4. 通过反射--操作运行时类中的指定的属性/方法
  5. (29)FPGA面试题时序电路延时
  6. 小试ImageMagik——开发篇
  7. 查询子串_你知道什么是 MySQL 的模糊查询?
  8. js微信抢红包脚本代码_微信抢红包插件示例代码及其实现原理
  9. 为什么要使用英英词典?
  10. vue.js 获取当前屏幕的宽度_js获取浏览器和屏幕的各种宽度高度
  11. python 绘图函数_python绘图函数
  12. readxmls r语言_R语言批量爬取NCBI基因注释数据
  13. 信息安全管理——数据编码与密码基础
  14. 项目管理挣值分析应用
  15. 微x模块怎么导入主题_模块
  16. 有关积分的不等式证明
  17. SWFObject 2.0
  18. 单片机高手是这样炼成的!这样学习单片机事半功倍
  19. 新手上路,请大家多多关照~
  20. ESP32专栏八 NVS存储

热门文章

  1. java void eat_java匿名内部类
  2. oracle存储过程多条件判断,oracle存储过程条件替空的判断(2)
  3. 苹果手机声音突然变小是怎么回事_苹果7通话声音小,苹果7听筒声音小怎么回事...
  4. android资源包混淆,Android---andresguard资源混淆
  5. 【maven】仓库的优先级顺序
  6. 三国大将风云java_三国正史四大猛将:临阵斩杀敌方大将,连吕布和马超也做不到...
  7. matplotlib 显示批量图片_chapter4-1 简单数据可视化包Matplotlib整理1
  8. C语言中低位存放,C语言 大端小端存储解析以及判断方法
  9. foxmail收件不及时_临近双11,多地快递网点却不送货、欠薪、倒闭?啥原因→
  10. java 中适配器原理_Java经典设计模式中关于适配器模式原理以及用法详解