用node实现http服务器 三

来源:互联网 发布:单片机433m超再生模块 编辑:程序博客网 时间:2024/06/07 07:23

    

     在前两篇中,我们学习了如何用node实现http服务器的基础创建方法。现在我们来说一下如何通过判断url来知道客户端所请求的资源。


     我们首先来看下使用url包中parse返回来的是一个什么样子的值:


var http = require("http");var url =require("url"); //引入url模块var server = http.createServer(function (request,respnse) {    var urlObj = url.parse(request.url);    console.log(urlObj);    respnse.end('url parse');});server.listen(8080);

    运行之后,在浏览器起重发起请求,


     在服务器控制台中则出现console的打印。


   

     当我们浏览器请求的网址变成这样时  http://localhost:8080/quenry.html?abc=xyz

     则打印的log就出现一些不同(红框部分则体现了url请求的内容):

  

     

   上图返回的值中,query表示请求的参数;pathname表示请求的资源。


    那下面我们就用上面的url返回的内容来进行一些比较复杂的操作。

    在写服务器代码时,我们首先来进行一些准备:

   写两个用来测试的html文件

   1:index.html

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title></head><body><h1 style="background: cornflowerblue">    hello  World!!<br>    这个是读取index.html文件显示出来的</h1></body></html>


   2:query.html

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title></head><body><h1 style="background: cornflowerblue">    hello  World!!<br>    这个是读取query.html文件显示出来的</h1></body></html>


    下面为服务器代码:

     

var http = require("http");//引入http模块var url =require("url"); //引入url模块var fs = require("fs");//引入fs模块var server = http.createServer(function (request,respnse) {    var urlObj = url.parse(request.url);    console.log(urlObj);    var query = urlObj.query;    var pathName = urlObj.pathname;    if(pathName = "/"){//当请求的网址为默认网址时        readFileAndResponse('/index.html',response)    }    else if(pathName === "/ajax"){//当请求的是一个Jason文件时,则返回一段Jason数据        response.end({"msg":"This is a json response."});    }else{        readFileAndResponse(pathName,response);    }    respnse.end('url parse');});function readFileAndResponse(path,response){     fs.readFile(path,'utf-8',function(err,data){         if(err){//当url想要请求的文件不存在的时候             response.writeHead(404);//对response的首部写入状态码。如404等。404代码所请求的链接不存在             response.end("File is not exist");         }else{//URL请求的文件存在             response.end(data);         }     });}server.listen(8080);

   下面我们就这上面代码的集中实现形式来进行测试:

     1:请求默认网页  

         

     2:请求一个存在的网页

         

     3:请求一个ajax

         

     4:请求一个不存在的页面,返回一个404的信号。

          

1 0
原创粉丝点击