nodejs-http服务
2015-12-10 11:01
861 查看
使用nodejs搭建http服务很简单,代码如下:
打开浏览器输入http://127.0.0.1:3000/后回车即可看到界面
![](http://dl2.iteye.com/upload/attachment/0113/6631/a0355824-349f-3127-b107-7af1d49af9ee.png)
接下来对上面的代码进行改造:
打开浏览器输入http://127.0.0.1:3000/后回车即可看到界面
![](http://dl2.iteye.com/upload/attachment/0113/6638/80e2bfef-fd2c-394d-8923-5cb46578eef0.png)
接下来引入新的模块,对请求的url进行解析
运行以上代码后打开浏览器输入 http://127.0.0.1:3000/aa/b/c/a.do?a=1&b=4 可以看到结果
-
上例中对请求的地址进行了解析,对于网站的所有请求,正常的思维应该是什么样的请求应如何处理,例如/booklist请求应展示一个列表 /bookinfo?id=1为展示id为1的图书的详细信息,有了上面对url模块的引用就可以根据请求地址进行处理了。
下载文件的事例:
以上内容都是get请求,下面处理post请求,代码如下:
var http = require("http");//获取http对象 http.createServer( //匿名的回调函数,当有请求进来的时候调用该函数 //req参数相当于J2EE的HttpServletRequest, //res参数相当于J2EE的HttpServletResponse function(req,res){ console.log("run ... "); res.writeHead(200,{'Content-Type':'text/html'});//响应代码为200(正常) 已html方式展示 res.write("<h1>Hello World</h3>"); //输出html代码 res.end('<p>hello World</p>');//输出html代码,必须要调用res.end()方法,否则浏览器一直等待直到该方法调用 } ).listen(3000); //监听3000端口 console.log(" HTTP Server is Listening at port 3000.");
打开浏览器输入http://127.0.0.1:3000/后回车即可看到界面
![](http://dl2.iteye.com/upload/attachment/0113/6631/a0355824-349f-3127-b107-7af1d49af9ee.png)
接下来对上面的代码进行改造:
var http = require("http");//获取http对象 var fs = require("fs"); //获取fs对象 http.createServer( //匿名的回调函数,当有请求进来的时候调用该函数 //req参数相当于J2EE的HttpServletRequest, //res参数相当于J2EE的HttpServletResponse function(req,res){ console.log("run ... "); res.writeHead(200,{'Content-Type':'text/html'});//响应代码为200(正常) 已html方式展示 //异步读取数据 fs.readFile("app02.html","utf-8",function(err,data){ if(err){//如果出现错误则直接显示错误原因 res.end(err); }else{//如果成功读取文件则返回文件内容 res.end(data.toString()); } }); } ).listen(3000); //监听3000端口 console.log(" HTTP Server is Listening at port 3000.");
打开浏览器输入http://127.0.0.1:3000/后回车即可看到界面
![](http://dl2.iteye.com/upload/attachment/0113/6638/80e2bfef-fd2c-394d-8923-5cb46578eef0.png)
接下来引入新的模块,对请求的url进行解析
var http = require("http");//获取http对象 var url = require("url");//获取url对象 var querystring = require("querystring");//获取querystring对象 http.createServer( //匿名的回调函数,当有请求进来的时候调用该函数 //req参数相当于J2EE的HttpServletRequest, //res参数相当于J2EE的HttpServletResponse function(req,res){ res.writeHead(200,{"Content-Type":"text/html"}); //获取请求地址 var requresturl = req.url; res.write("request url:" + requresturl + "<br/>"); //请求的路径 var pathname = url.parse(req.url).pathname; res.write("pathname:" + pathname + "<br/>"); //请求的参数 var querystr = url.parse(req.url).query; res.write("query str : " + querystr + "<br/>"); //请求的地址进行所有属性的解析 var obj = url.parse(req.url); res.write(JSON.stringify(obj)+"<br/>"); res.write("<hr/>"); //请求的参数转为JSON格式 var params = querystring.parse(querystr); res.write(JSON.stringify(params)+"<br/>"); res.write("<hr/>"); res.end("please input a url like : http://127.0.0.1:3000/aa/b/c/a.do?a=1&b=4"); } ).listen(3000); //监听3000端口 console.log(" HTTP Server is Listening at port 3000.");
运行以上代码后打开浏览器输入 http://127.0.0.1:3000/aa/b/c/a.do?a=1&b=4 可以看到结果
-
上例中对请求的地址进行了解析,对于网站的所有请求,正常的思维应该是什么样的请求应如何处理,例如/booklist请求应展示一个列表 /bookinfo?id=1为展示id为1的图书的详细信息,有了上面对url模块的引用就可以根据请求地址进行处理了。
下载文件的事例:
var http = require("http");//获取http对象 var fs = require("fs"); http.createServer( //匿名的回调函数,当有请求进来的时候调用该函数 //req参数相当于J2EE的HttpServletRequest, //res参数相当于J2EE的HttpServletResponse function(req,res){ //设置相应代码为200 content-type为图片 对于各种文件的content-type请baidu.. res.writeHead(200,{"Content-Type":"image/jpeg"}); //异步读取文件流 var stream = fs.createReadStream("ly.jpg"); //读取文件的时候触发 stream.on("data",function(data){ res.write(data); }); //数据读取完成触发 stream.on("end",function(){ res.end(); }); } ).listen(3000); //监听3000端口 console.log(" HTTP Server is Listening at port 3000.");上面例子仅仅是让大家了解content-type属性
以上内容都是get请求,下面处理post请求,代码如下:
var http = require("http");//获取http对象 var querystring = require("querystring"); var util = require("util"); http.createServer( //匿名的回调函数,当有请求进来的时候调用该函数 //req参数相当于J2EE的HttpServletRequest, //res参数相当于J2EE的HttpServletResponse function(req,res){ console.log(" deal request : " + req.url); var post= ""; //当接受到数据的时候触发 req.on('data',function(chunk){ console.log('accept date :' + chunk); post += chunk; }); //数据接受完时触发 req.on('end',function(){ console.log('request date end'); post = querystring.parse(post); res.writeHead(200,{'Content-Type':'text/html'}); //res.end(util.inspect(post)); console.log("data:" + JSON.stringify(post)); res.end(JSON.stringify(post)); }); } ).listen(3000); //监听3000端口 console.log(" HTTP Server is Listening at port 3000.");以上是服务,运行服务后用浏览器打开html,代码如下:
<html> <head> <meta charset="utf-8"/> <script> function submitPost(){ var url = document.getElementById("submitUrl"); document.getElementByid("theForm").action=url; } </script> </head> <body> <form method="post" action="http://192.168.1.113:3000" id="theForm"> 提交地址:例如http://192.168.1.113:3000<br/> <input type="text" style="width:300px;" id="submitUrl" name="submitUrl" value="http://192.168.1.113:3000"/> <hr/> name:<input name="name" type="text" value="name_value"/> <br/> age:<input name="age" type="text" value="age_value"/> <input type="submit" value="submit" onclick="submitPost()"/> </form> </body> </html>点击提交后查看后台就可看到输出内容
相关文章推荐
- CentOS7配置Apache HTTP Server
- 理解HTTP session原理及应用
- 网络通信原理
- IOS 开发中[IOS9更新后...网络?第三方库?报错?]
- 7种网络连接方式demo
- linux平台几个压力,网络流量的工具
- STM32 LWIP TCP 以太网调试注意问题
- Java HttpClient 的简单应用
- HTTP常见状态码 200 301 302 404 500
- 《HTTP权威指南》– 2.HTTP报文与URL资源
- 《HTTP权威指南》– 3.HTTP方法和状态码
- TFS 2010:服务器不提供Team Foundation服务,HTTP代码503,Service Unavailable
- HTTP Status 500 - Error instantiating servlet class
- TCP,IP详解,卷一:协议学习笔记之第十七章 TCP:传输控制协议
- webApp开发之html5Plus---检查网络等js方法
- 【摘自网络】dll库和lib库有什么区别
- httpd配置详解
- 太原网络营销师郭文军揭秘淘宝标题的撰写思路
- kafka无法网络访问问题
- ios 9 http配置