`
JavaCrazyer
  • 浏览: 2989074 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

Node.js+Express构建Http服务(GET方式和POST方式)

 
阅读更多

Node.js

前提

  • 环境:windows7
  • 下载地址:http://nodejs.org/download/

安装

官网下载一个安装文件点击下一步安装完成即可.

验证安装是否成功:node -v


 

基本HTTP服务器

c:/http.js

//http是内置模块、直接引入
var http = require('http');
 
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080);
 
console.log('Server running on port 8080.');

 

 运行 


 

访问

http://localhost:8080

 

小结
 该例中所创建的并不是一个功能全面的HTTP服务器,它并不能处理任何HTML文件、图片。事实上,无论你http://localhost:8080/后添什么,请求后,它都将返回“Hello World”

 

express框架【处理GET和POST请求】

Express是对Node.js的一个高性能的封装,是Node.js上最流行的高性能Web开发框架。

如果你用过Ruby的Sinatra.rb, 会觉得Express非常熟悉。Express作者是参考sinatra, 写了一个基于node.js的实现。

 

安装

第一步:在任意磁盘创建hello-world目录

 

第二步:进入hello-world目录执行:npm info express version  查看express最新版本,可以看到版本号

 

第三步:在hello-world目录中新建文件名为:package.json,内容如下,主要将第二步的版本号填入

{  
    "name": "hello-world",  
    "description": "hello world test app",  
    "version": "0.0.1",  
    "private": true,  
    "dependencies": {  
        "express": "3.3.8"  
    }  
}

    package.json文件包含了应用程序的基本信息。其中“dependencies”部分描述了你想安装模块的名称和版本。该案例,接受Express 3.3.8版本,如果是3.3表示接受3.3相关的任何版本。你可以在该部分列出你想要的所有依赖。 如果你想安装其他的依赖模块,类似安装express一样,可以在dependencies中定义你的模块名称和版本,执行npm install即可安装,一旦找到,即可安装所列出的所有依赖。 

 

第四步:在hello-world目录下执行:npm install进行安装.

      一旦npm安装依赖包完成,项目根目录下会出现node_modules的子目录。项目配置所需的express包都存放于这里。

 

说明:第三步和第四步还有更简单的操作方式,直接输入命令:npm install express,会出现如下画面直到安装完成



 

第五步:nmp ls验证express是否安装完成


 

一:处理GET请求

c:/hello-world/app.js

var express = require('express');  
var app = express(); 
//接着,我们可以使用app.动词()定义路由。
//比如使用"GET /"响应"Hello World"字符串,因为res、req都是Node提供的准确的对象,因此你可以调用res.pipe()
//或req.on('data', callback)或者其它。
//app.get('/hello.txt', function(req, res){  
//    var body = 'Hello World';  
//    res.setHeader('Content-Type', 'text/plain');  
//    res.setHeader('Content-Length', body.length);  
//    res.end(body);  
//});  

//ExpressJS框架提供了更高层的方法,比如res.send(),它可以省去诸如添加Content-Length之类的事情。如下:
//处理GET请求
//http://127.0.0.1:8080/hello/?name=wujintao&email=cino.wu@gmail.com
app.get('/hello/*', function(req, res){
	console.log(req.query.name);
    console.log(req.query.email);
    res.send('Get Over');  
});  
//以上表示凡是url能够匹配/hello/*的GET请求,服务器都将向客户端发送字符串“Hello World"

//app.get('/', function(req, res){
// res.render('index', {
//    title: 'Express'
//  });
//});
//上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。


//现在可以绑定和监听端口了,调用app.listen()方法,接收同样的参数,比如:
app.listen(8080);  
console.log('Listening on port 8080');  

 

运行

 


 

GET请求

 请求:http://127.0.0.1:8080/hello/?name=wujintao&email=cino.wu@gmail.com

 通过Chrome的DEV HTTP CLIENT插件请求结果如下:

 

服务器日志信息如下:



 

二:处理POST请求
 c:/hello-world/app.js

var express = require('express');  
var app = express(); 
app.configure(function() {
  //默认情况下Express并不知道该如何处理该请求体,因此我们需要增加bodyParser中间件,用于分析
  //application/x-www-form-urlencoded和application/json
  //请求体,并把变量存入req.body。我们可以像下面的样子来“使用”中间件[这个保证POST能取到请求参数的值]:	
  app.use(express.bodyParser());
});

//处理POST请求
//name和email是POST请求域中的参数名
app.post('/hello', function(req, res) {
    console.log(req.body.name);
    console.log(req.body.email);
    res.send('Post Over');  
});

post_mtd = function(req,res){
  res.send('我是Wujintao');
}
//其中这两种形式中的function均可以定义在外部,然后引进方法名即可。其中方法post_mtd要在引用其前定义
app.post("/wujintao",post_mtd);

//除了app.get、app.post这种形式外,还可以采用:app.all在这里all表示get,post等任何一种请求方式,当然也可以指定为某种特定的请求方式。
//或者app['get']('/path', function(req,res));这种形式。

//现在可以绑定和监听端口了,调用app.listen()方法,接收同样的参数,比如:
app.listen(8080);  
console.log('Listening on port 8080');

 运行


 

POST请求

 请求:http://127.0.0.1:8080/hello

 通过Chrome的DEV HTTP CLIENT插件请求结果如下:


 

服务器日志信息如下:



 

 

至此,HTTP服务器处理GET和POST请求已经详细讲完

 

参考资料

http://www.nodejs.org/api/http.html#http_http_request_options_callback

http://www.nodejs.org/api/

https://github.com/visionmedia/express

 

http://expressjs.com/guide.html

  • 大小: 810 Bytes
  • 大小: 721 Bytes
  • 大小: 9.3 KB
  • 大小: 2.2 KB
  • 大小: 14.7 KB
  • 大小: 16.1 KB
  • 大小: 22.4 KB
  • 大小: 1010 Bytes
  • 大小: 38.2 KB
  • 大小: 1.3 KB
  • 大小: 42.5 KB
  • 大小: 1.4 KB
4
2
分享到:
评论
3 楼 mangguo 2014-12-12  
我也谢了一个express的课程,还可以练习。http://www.hubwiz.com/course/544db33888dba01ef09d0682/ 博主看一下
2 楼 yan1990 2014-06-19  
挺好的 。谢谢。
1 楼 di1984HIT 2014-06-09  
写的很好啊。呵呵~

相关推荐

Global site tag (gtag.js) - Google Analytics