zoukankan      html  css  js  c++  java
  • 完成HelloWorld——Node.js摸石头系列三

    系列目录:Node.js摸石头系列目录

    一、完成HelloWorld

        上回我们说到,使用 node.js ,我们可以迅速架起一个 http 服务器。不过上次咱们仅仅是在后台看到了客户端发来了访问,还没把  “Hello World” 给发出去呢。好,说干就干。

        大家都明白,我们的Web应用抽象起来就是客户端发出请求,请求到达服务器后,服务器经过一番捣鼓,给客户端发回一个应答。“请求”我们一般抽象成 request,“应答”是 response。服务器和客户端(一般也就是浏览器啦,但是绝不局限于浏览器哦。)之间交流的语言就是 HTTP 协议了。至于服务器怎么折腾出一个应答来的,就八仙过海,各显神通了。

        总之,Web 应用中两个重量级的东东就是: Request , Response 。

        前面我们说到,每次有访问进来,我们的代码都会跑一遍。现在的问题是,在我们的代码里,怎么抓到客户端发来的 request , 然后,到哪里去找这个 response ,好把我们捣鼓出来的东西放进去,发给客户端呢?答案是,只要我们把他们作为参数交给 tellme 函数(你可以给这个函数取任何名字甚至不给他名字),然后,当请求到达时,node.js 就会把客户的请求封装成 request ,预备发给客户的应答封装成 response 。我们拿到 request ,看看他请求些什么,再折腾些东西(读出个文件也好,去查数据库也好,随便你了。)丢进 response ,发给客户端。

    提醒:这种利用参数进行传递是 node.js 的常态。

    请看代码:

    /* Request and Response */
    
    var http = require('http');
    
    http.createServer(
    
    function(request, //客户端发来的请求,node.js 帮我们封装成 request 对象
    		 response //我们利用response,向客户端发送回答
    		 ){
    	//在控制台显示request对象
    	console.log(request);
    	//总算完成 hello world 了。
    	response.end('Hello world!');
    
    }).listen(888);
    
    console.log('Server start at 888');

    运行他,用浏览器访问他。现在,在浏览器得到了咱们盼望已久的“Hello world!”,真不容易啊。再看看服务器的控制台,这么一大串的是什么?这个就是 Request 了。如果您熟悉 Json 格式,我想您已经看明白了,不熟悉也没关系,其实很简单,无非就是花括号( {} )标示对象,对象里各个属性用逗号( , )隔开,每个属性都由一个“键”和一个“值”组成,中间用冒号 ( : )分开,是不是很简单呢。

    { socket:{ ... },
      ...
      headers:   { host: 'localhost:888',
         connection: 'keep-alive',
         'cache-control': 'max-age=0',
         'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1 CoolNovoChromePlus/1.6.4.30',
         accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
         'accept-encoding': 'gzip,deflate,sdch',
         'accept-language': 'zh-CN,zh;q=0.8',
         'accept-charset': 'GBK,utf-8;q=0.7,*;q=0.3' },
    
      ...
       url:'/',
       method:'GET',
       ...
    }

        观察 request 对象,我们可以找到一些我们熟悉的东西。比如:request.url、request.method、比如 headers 。好,下面我们来把后台让我们眼花缭乱的输出简化一下:

    /* Request and Response */
    
    var http = require('http');
    http.createServer(
    function(request,  response ){
    	//只显示request对象的某几个属性
    	console.log(request.url);
    	console.log(request.headers['user-agent']);
    	//回应客户端
    	response.end('Hello world!');
    }).listen(888);
    
    console.log('Server start at 888');

        重启服务,访问服务器,观察后台。发现我们每刷新一次浏览器,其实进来了两个request,一个是访问’/’的,另一个是找 ‘favicon.ico ' 的,当然,很抱歉,目前还没有这个网站图标给他。控制台还显示了客户端用来访问服务器的浏览器的类型和版本。如果还想知道些什么,自己去 request 里面去挖吧。

    系列四我们将完成一个静态的 Web 服务器,只要把静态页面丢进某个文件夹,就可以用浏览器访问。另由于昨天去考驾照理论课,进度有些慢了,对不住。

  • 相关阅读:
    理解Linux系统负荷 和 ubuntu静态、动态设置ip地址
    Kafka笔记--监控系统KafkaOffsetMonitor
    Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)
    Android学习笔记--Broadcast, BroadcastReceiver(广播)
    Java学习笔记--xml构造与解析之Sax的使用
    Android学习笔记--存储方案(SharedPreference、文件IO)
    Android学习笔记--Menu菜单的使用
    Android学习笔记--AlertDialog应用
    Kafka笔记--参数说明及Demo
    Kafka笔记--分布式环境搭建
  • 原文地址:https://www.cnblogs.com/hsxixi/p/2296444.html
Copyright © 2011-2022 走看看