Node.js先睹为快(3)

接下来我们创建一个简单的http server,我们需要使用到http模块,这是一个内核模块,所以无需npm install:

// require core module http
var http = require("http");

// create http server, port 3000
http.createServer(function(request, response){
    // http request handling code
    response.writeHead(200, {"Content-Type": "text/html"});
    response.end("<html><body>Home, URL was: " + request.url + "</body></html>");
}).listen(3000, "localhost");

console.log("Server running at http://localhost:3000/");

代码中已经包含注释,比较容易看得懂了,其中的function(request, response)对于对java熟悉的朋友应该非常熟悉,servlet中也有类似的代码。






可能大家觉得以上的代码还是有些繁琐,我们也可以使用一个非核心的connect模块来简化代码:

var connect = require("connect");

var app = connect().use(connect.static("public")).use(
    function(req, resp) {
        resp.end("Couldn't find it.");    
    }).listen(3500);
    

我们的代码简化了,而且如果我们拷贝一份静态的html页面到public目录后会发现,目录中的页面、图片等资源可以通过url方式访问,且输入无效的url还能提示“Couldn't find it.”,注意.static("public")需要放置在use之前,表示静态url优先处理,处理不了的再去通过function处理。



我们的第三个例子演示如何处理http提交部分的代码:

我们在public目录下有一个html文件:

<html>
<body>
	<form action="/process" method="post">

		<label for="name">Name</label><input type="text" name="name" value="" id="name">
		<label for="repeat">Repeat</label><input type="text" name="repeat" value="" id="repeat">

		<p><input type="submit" value="Submit"></p>
	</form>
</body>
</html>

这个页面提交后的action是process,所以我们的脚本文件如下:

var connect = require('connect');


// handling request order:
// 1.body parser,so we can handle body object
// 2.set public as our url root "/"
// 3.if url is "/process", print ...; else print "Invalid request"
var app = connect()
	.use(connect.bodyParser())
	.use(connect.static('public'))
	.use(function (req, res) {
		if (req.url === '/process') {
			res.end(req.body.name + ' would repeat ' + req.body.repeat + ' times.');
		} else {
			res.end("Invalid Request");
		}
	})
	.listen(3700);




最后我们来看看如何手动处理响应(response)的例子:

其中一个例子是使服务器返回各种错误:

var connect = require('connect');

var app = connect()
	.use(function (req, res) {
		// output "Forbidden" text
		res.end("Forbidden");
	})
	.listen(3800);


我们打开浏览器的调试窗口,再来让服务器返回一个403错误:

var connect = require('connect');

var app = connect()
	.use(function (req, res) {
		// set status code
		res.statusCode = 403;
		// output "Forbidden" text
		res.end("Forbidden");
	})
	.listen(3800);


接下来我们看如何返回JSON数据:

var connect = require('connect');

var my_data = {
	'fruit': 'apple',
	'number': '555-1212',
	'color': 'purple'
};

var app = connect()
	.use(function (req, res) {
		// set content header
		res.setHeader('Content-Type', 'application/json');
		// output json string data
		res.end(JSON.stringify(my_data));
	})
	.listen(3900);



至此,关于如何创建一个简单的http server部分已经讲完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值