NodeJS Web模块
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)
//返回错误信息404
response.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).query
res.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后输入表单内容并提交,服务器会给出相应


NodeJS Web模块的更多相关文章
- Nodejs Web模块( readFile 根据请求跳转到响应html )
index.js 根据请求的路径pathname,返回响应的页面. var http = require('http'); var fs = require('fs'); var url = requ ...
- Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架
目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...
- NodeJS 常用模块
NodeJS 模块: n:NodeJS 版本管理/切换 参考: https://github.com/tj/n ExpressJS:Web 框架 参考: http://expressjs.com/ m ...
- Node.js Web模块
什么是Web服务器? Web服务器是处理由HTTP客户端发送的,如web浏览器的HTTP请求的软件应用程序,并返回响应于客户端网页. Web服务器通常伴随着图片,样式表和脚本的HTML文档. 大多数W ...
- NodeJS常用模块介绍
收集了NodeJS开发中常用的一些模块. MVC框架 - Express Express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站.Express框架建立在Nodejs内置的Ht ...
- Nodejs WEB开发常用库和框架
我在Nodejs的体系里也算泡了很久了,的确非常喜欢javascript和Nodejs. 在我看来,用nodejs做web开发有以下几个优点: Javascript作为一个语法异常简单的脚本语言,约束 ...
- Node.js:Web 模块
ylbtech-Node.js:Web 模块 1.返回顶部 1. Node.js Web 模块 什么是 Web 服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服 ...
- nodejs事件模块
nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life ...
- 配置 Windows 下的 nodejs C++ 模块编译环境
根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nod ...
随机推荐
- Give root password for maintenance(or type control -D to continue)
2017-09-30 18:12:08 1:错误如图,本来开机准备用一下虚拟机,就出现一个这,为啥记录一下呢,因为网上好多不是很靠谱. 原因可能是之前关闭虚拟机的时候不小心出现异常了: 2:解决办法: ...
- 请推荐几个asp.net下做网站的好的开源框架
1.We7 CMS We7 CMS是由西部动力开发的一款充分发掘互联网Web2.0(如博客.RSS等)的信息组织优势,将其理念利用到政府企事业网站的构建.组织.管理中的网站建设和管理方面的产品. 系统 ...
- DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)
一.错误情况 环境:win7+iis7.0 DirectoryEntry配置IIS7出现如下错误 或者是 下面一段代码在IIS6.0下运转正常,但IIS7.0下运转会出错: System.Direct ...
- Python_lambda简单函数表达式
lambda表达式只能用于简单函数的书写 def funx(a): a+=1 return a print(funx(99)) 用lambda实现上面函数: funx = lambda a: a+1 ...
- Python学习(十一) —— 模块和包
一.模块 一个模块就是一个包含了python定义和声名的文件,文件名就是模块名加上.py后缀. import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共 ...
- jquery的div局部刷新
jquery的div局部刷新 //div的局部刷新 $(".dl").load(location.href+" .dl"); 全页面的刷新方法 window.l ...
- BZOJ3583 杰杰的女性朋友 矩阵
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3583.html 题目传送门 - BZOJ3583 题意 有一个 $n$ 个点构成的有向图. 对于每一个 ...
- 设计模式之单例模式及应用demo
单例模式是创建型模式之一. 单例模式顾名思义是单例的,也就是只有一个实例化对象,这都来源于它的私有化构造函数. 单例模式特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...
- Python 2 和 3 的区别记录
Python 2 和 3 的区别记录 print 2:关键字,可以 print a,也可以 print(a) 3:内置函数,必须带(),print(a) reload() 2:内置函数,可以直接使用 ...
- php防攻击
客户端脚本植入 XSS跨站脚本攻击(跨站脚本攻击,输入(传入)自动执行恶意的HTML代码,如盗取用户Cookie.破坏页面结构.重定向到其它网站):过滤<,>&,"等特殊 ...