http: 超文本传输协议,所有路由都是通过它来传输,通过它能够构建一个客户端与服务端连接的管道
http模块: 能够构建服务器环境(模拟客户端)
创建服务器
类似 node.js基础(一) 文章中提到的
var http = require("http");var url = require("url");var server = http.createServer(function(req, res){ console.log(req.url); // 打印请求的路径
实例1
使用from表单进行简单的前后台交互
首先创建三个文件, index.html 和 form.html 以及 http.js (名字随意,具体是了解如何实现)。
index.html文件内容
<!DOCTYPE html><html>
form.html文件内容
<!DOCTYPE html><html>
http.js文件内容
var http = require("http");var url = require("url");var fs = require("fs");var server = http.createServer(function(req, res){ var urlObj = url.parse(req.url, true); if (urlObj.pathname == "/" || urlObj.pathname == "/index.html") { // 把本项目中的index.html读出来,写进响应res中
至此可以试一下打开http.js的模拟服务器,在浏览器输入 http://localhost:8080 进行一下相关操作看一下效果吧。
最终效果在终端能够如图所示就大功告成了,但是这里只有简单的两个页面交互,如果有许许多多的页面,每个页面都要去else if判断一下是不是太麻烦了,这里有个较为简便的方法,在 http.js 的文件中将else if改为如下:
else if (urlObj.pathname != "/favicon.ico") { fs.createReadStream("." + urlObj.pathname).pipe(res);
这样就不用写很多pathname去一一匹配了~是不是很方便呢!
这里默认的传输方式是通过GET,那如果是POST该怎么写呢?
实例2
使用from表单的POST传输方式进行简单的前后台交互
还是实例1中的三个文件,将 form.html 文件的 form 标签里的属性更改为
<formaction="/post"method="post">
然后再将 http.js 更改为如下
var http = require("http");var url = require("url");var fs = require("fs");var queryString = require("querystring");var formidable = require("formidable");var server = http.createServer(function(req, res){ var urlObj = url.parse(req.url, true); if (urlObj.pathname == "/" || urlObj.pathname == "/index.html") { var rs = fs.createReadStream("index.html");
这样最终效果同GET方式一样能够获取到填写的用户名和密码,并且最终页面返回的结果是“你请求的地址是/post”
实例3
使用from表单的POST传输方式进行简单的图片上传的操作
这里同样是上述的三个文件,在 form.html 文件中加上上传文件的标签
<inputtype="file"name="fileup">
在 http.js 中也添加一段对post传输文件的操作,代码如下:
else if (urlObj.pathname == "/post") { // 处理上传文件
此时可以测试一下上传一张图片看看能否在upload目录下找到同样的图片~
实例4
ajax请求的发送与接收
这里就不需要 form.html 文件了,将 index.html 加上一段 script 标签进行ajax请求发送,代码如下:
<script>
在 http.js 文件中的else if后再加上一段代码
else if (urlObj.pathname == "/ajax") { // 接收了ajax传输的数据
最终同样在浏览器输入 http://localhost:8080 在终端就能收到ajax发送出来的user和pass两个字段了~
实例5
http模拟客户端
这里我们再新建一个名为 request.js 的文件,这里提供get和post两种写法,代码如下:
var http = require("http");
然后在 http.js 文件中再添加一段else if代码
else if (urlObj.pathname == "/request") { // get方式
然后我们先开启一下 http.js 这个模拟服务器,在运行 request.js 进行模拟请求,我们会发现 request.js 会返回出
{“err”: 0, “msg”: “请求的内容”}
,然后服务器会返回出
user=xxx&pass=111 请求结束
。如果出现这种结果就说明发送成功了!
联系客服