zoukankan      html  css  js  c++  java
  • node http 基础

    创建一个最基本的http服务,需要引入两个核心模块。

    http模块及fs模块。

    在http创建的服务里,有两个基本参数(request、response)

    request能够获取,请求方法

    request.method

    、请求的url地址

    request.url

    、请求头

    request.headers

    (实际客户端传来的有,方法、url、协议版本(http协议)、请求头、请求体)

    (服务器端要返回的有,协议版本、状态码头、状态码的原因短句、响应首部字段、响应体)

    response能够设置,设置状态码

    response.statusCode = 200;

    、设置响应类型

    response.setHeader('Content-Type','text/html;charset=utf-8')

    、设置响应头

    response.setHeader('name','zj');

    、读取文件的内容并且将读到的内容写入响应体

    fs.readFile('index.html', function (err, data) {
    response.write(data);//写入响应体
    response.end();
    });
    var http = require('http');
    var fs = require('fs');
    
    function serve(request,response){
        //请求的方法//请求里的url地址
        console.log(request.method,request.url);
        //console.log(request.headers);//获取请求头
    
        response.statusCode = 200;//设置状态码
        response.setHeader('Content-Type','text/html;charset=utf-8');//设置响应的类型,编码为utf-8
        response.setHeader('name','zzz');//设置响应头
        //读取文件的内容并且将读到的内容写入响应体
        fs.readFile('index.html', function (err, data) {
            response.write(data);//写入响应体
            response.end();
        });
        //fs.readFile是异步方法,通过回调函数来接收读取文件返回内容。
        // fs.readFileSync是同步方法,通过返回值来接收文件返回内容。
    }
    //每当有请求来的时候调用serve函数对客户端进行响应
    var server =  http.createServer(serve);
    
    server.listen(8080,'localhost');

    优化服务代码,增加第三方mine模块,动态设置响应类型,根据客户端传来的url来加载对应的文件,写入响应体

    var http = require('http');
    var fs = require('fs');
    var mime = require('mime');
    
    function serve(request,response){
        var url = request.url;
        if(url == '/'){
            //设置响应的类型,编码为utf-8
            response.setHeader('Content-Type','text/html;charset=utf-8');
            //读取文件的内容并且将读到的内容写入响应体
            fs.readFile('index.html', function (err, data) {
                response.write(data);//写入响应体
                response.end();
            });
            //fs.readFile是异步方法,通过回调函数来接收读取文件返回内容。
            // fs.readFileSync是同步方法,通过返回值来接收文件返回内容。
        } else {
            static(url, response);
        }
    
        function static(url, response){
            //设置响应的类型,编码为utf-8
            response.setHeader('Content-Type',mime.lookup(url)+';charset=utf-8');
            //读取文件的内容并且将读到的内容写入响应体
            fs.readFile(url.slice(1), function (err, data) {
                response.write(data);//写入响应体
                response.end();
            });
        }
    
    }
    //每当有请求来的时候调用serve函数对客户端进行响应
    var server =  http.createServer(serve);
    
    server.listen(8080,'localhost');

    增加url模块,对url进行处理

    var http = require('http');
    var fs = require('fs');
    var mime = require('mime');
    var url = require('url'); //对URL进行处理,把字符串转成对象
    
    function serve(request,response){
        //true 表示query转成对象
        var urlObj = url.parse(request.url,true);
        console.log(request.url ,urlObj.query.name,urlObj.query.age);
        if(urlObj.pathname == '/'){
            //设置响应的类型,编码为utf-8
            response.setHeader('Content-Type','text/html;charset=utf-8');
            //读取文件的内容并且将读到的内容写入响应体
            fs.readFile('index.html', function (err, data) {
                response.write(data);//写入响应体
                response.end();
            });
            //fs.readFile是异步方法,通过回调函数来接收读取文件返回内容。
            // fs.readFileSync是同步方法,通过返回值来接收文件返回内容。
        } else if(urlObj.pathname == '/clock'){
            var counter = 0;
            var int = setInterval(function () {
                response.write((new Date()).toString());
                counter++;
                if(counter==5){
                    clearInterval(int);
                    response.end();
                }
            },1000)
        } else {
            static(urlObj.pathname, response);
        }
        function static(pathname, response){
            //设置响应的类型,编码为utf-8
            response.setHeader('Content-Type',mime.lookup(pathname)+';charset=utf-8');
            //读取文件的内容并且将读到的内容写入响应体
            fs.readFile(pathname.slice(1), function (err, data) {
                response.write(data);//写入响应体
                response.end();
            });
        }
    
    }
    //每当有请求来的时候调用serve函数对客户端进行响应
    var server =  http.createServer(serve);
    
    server.listen(8080,'localhost');
  • 相关阅读:
    微软Enterprise Library 4.0将支持依赖注入
    javascript cookies 存、取、删除实例
    动态调用 WebService(转)
    IE缓存是什么?cookies是什么?
    序列化
    PKI
    ASP.NET的(HttpModule,HttpHandler)(转)
    PKI基础 二.PKI基础5.数字证书及应用(转,一个加密解密的全过程)
    AOP技术基础(转)
    getChildByName()与getChildAt()效率比较
  • 原文地址:https://www.cnblogs.com/zhoujx1066/p/7985375.html
Copyright © 2011-2022 走看看