`
JavaCrazyer
  • 浏览: 3008731 次
  • 性别: 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  
写的很好啊。呵呵~

相关推荐

    使用node.js+express+bootstrap+mongodb做简易的博客系统.zip

    在本项目中,我们利用了四个核心技术来构建一个简易的博客系统:Node.js、Express、Bootstrap和MongoDB。下面将详细解析这些技术及其在项目中的应用。 首先,Node.js是基于Chrome V8引擎的JavaScript运行环境,它...

    vue+node.js+express+mysql最简单的列表管理

    在本项目中,"vue+node.js+express+mysql最简单的列表管理" 是一个全栈Web应用程序的示例,旨在帮助初学者理解如何将这四种技术整合在一起构建一个功能简单的应用。下面,我们将深入探讨这些技术及其在项目中的作用...

    基于Vue.js+express+echarts开发可视化大屏数据展示项目,大屏以深色背景为主。.zip

    在这个基于Vue.js、Express和ECharts的可视化大屏数据展示项目中,开发者采用了现代Web开发技术来构建一个具有深度和专业性的数据呈现平台。以下是该项目所涉及的关键知识点: 1. **Vue.js**: Vue.js 是一个轻量级...

    node.js+express框架代码

    Express 是一个轻量级的 Node.js Web 应用框架,它为构建 Web 应用提供了简洁、灵活的接口,使得开发工作变得更加高效。 在 "node.js+express框架代码" 的场景中,我们通常会涉及到以下几个关键知识点: 1. **Node...

    Blog.rar(node.js+express+mysql)

    "Blog.rar(node.js+express+mysql)" 这个标题表明这是一个使用Node.js、Express框架和MySQL数据库开发的博客系统项目。RAR文件是压缩包格式,通常包含源代码或者相关资源文件。 **描述解读:** 描述中提到,这个...

    基于微信小程序+node.js+express.js+MySQL的校内订餐系统源码+数据库

    在本项目中,Express.js用于构建API接口,处理GET、POST等HTTP请求,实现如登录验证、菜品查询、订单创建等业务功能。开发者可以通过定义路由、中间件和控制器来组织代码,提高代码的可读性和可维护性。 **MySQL**...

    node.js+express+mysql+分页+bootstrap+文件上传+基本新闻模板和后台管理

    在本项目中,我们主要探讨的是使用Node.js作为后端开发框架,Express作为Node.js的应用程序框架,MySQL作为关系型数据库,Bootstrap作为前端UI库,以及实现文件上传和新闻管理功能。下面将对这些技术进行详细阐述。 ...

    node.js+express+sqlserver 极简后端Api框架

    总的来说,这个框架提供了一套完整的后端开发解决方案,让开发者能够快速构建RESTful API服务,同时利用Node.js的灵活性和SQL Server的数据处理能力。通过理解和利用这个框架,你可以提升开发效率,减少重复工作,...

    记账小程序前端代码以及后端代码,uniapp + vue3+node.js+express

    本文将详细讲解基于"uniapp + vue3+node.js+express"开发的记账小程序的...通过uniapp和vue3构建用户友好的界面,利用Node.js和Express搭建高效的后端服务,实现了记账数据的存储和管理,为用户提供便捷的记账体验。

    vue+nodejs+express+mybatis

    **Express.js** 是基于Node.js的Web应用框架,简化了构建Web服务的过程。Express提供了以下特性: 1. 轻量级:Express没有默认的模板引擎或数据库,可以根据需求自由选择。 2. 中间件系统:Express使用中间件处理...

    NodeJS全栈开发之后端接口技术栈基于Node.js+Express+Mysql实现RESTFUL API.zip

    Express是Node.js的一个轻量级框架,用于构建web应用和服务。它简化了HTTP服务器的创建,提供了丰富的中间件系统,用于处理路由、认证、 sessions 和更多功能。在“todo-nodejs-api-master”项目中,Express将被用来...

    使用 Node.js + Express + MongoDB + MySQL 搭建博客系统.zip

    在本项目中,我们将探讨如何使用Node.js、Express框架、MongoDB数据库以及MySQL数据库搭建一个完整的博客系统。这个过程涉及到Web开发的多个层面,包括后端服务器构建、数据库设计、路由处理以及数据交互等关键环节...

    EBlog是一个基于Node.js + Express + MongoDB的单用户博客系统.zip

    EBlog是一个专为个人用户设计的博客系统,它利用了现代Web开发技术栈,包括Node.js、Express...通过深入研究EBlog的代码,可以更好地理解Node.js、Express和MongoDB的协同工作方式,以及如何构建一个完整的web应用。

    node.js +express +ajax + mysql 对数据库增删改查,数据库有用户表和商品列表

    首先,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,提供了丰富的库和框架,如Express,用于快速构建高效、可扩展的网络应用。 Express是Node.js的一个Web...

    使用node.js+express+mongodb来搭建一个简单的blog系统。.zip

    在本文中,我们将深入探讨如何使用Node.js、Express和MongoDB构建一个基本的博客系统。这是一个常见的技术栈,尤其适用于初学者和毕业设计项目。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使得...

    基于Node.js的极简的学生管理系统

    Node.js,作为一款基于Chrome V8引擎的JavaScript运行环境,以其非阻塞I/O和事件驱动的特性,使得它在构建高效、可扩展的网络应用时展现出强大的性能。本项目“基于Node.js的极简的学生管理系统”就是利用了这些优势...

    Node.js-nodeexpressMongoDB实现的最小新闻后台系统增删改查

    通过这个项目,你可以掌握从零开始构建一个完整的后端Web服务的基本流程,了解Node.js、Express和MongoDB三者如何协同工作,为实际开发提供宝贵的实践经验。同时,这个系统还可以作为进一步学习和扩展的基础,例如...

    nodejs+express+mysql后台框架

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Node.js+Express+MySQL的组合正是实现这一目标的强大工具。本框架充分利用了这些技术的优势,为开发者提供了一个便捷的后台开发基础。 Node.js是一种基于...

Global site tag (gtag.js) - Google Analytics