zoukankan      html  css  js  c++  java
  • node.js(2)

    http协议---是浏览器和web服务器之间的通信协议

    1)通用头信息

    Request URL:请求的url,要向服务端请求哪个文件

    Request Method:请求的方法   get/post

    Status Code:响应的状态码

      2**     服务器成功的响应

      3**     响应的重定向,跳转到另一个网址

      4**  客户端错误

      5**  服务器错误

    Remote Address:远程服务器的地址

    Reffer Policy:进服务器的方式

    2)响应头信息

    Connection:连接方式     keep-alive----持续连接;

    Content-Encoding:响应文件压缩形式;

    Content-Type:响应的文件类型;

    Transfer-Encoding:响应时的传输方式     chunked----分段传输;

    Location:响应时跳转的URL,通常结合着300系列状态码;

    3)请求头信息

    Accept:客户端接收的文件类型有哪些;

    Accept-Encoding:客户端接受的文件压缩形式;

    Accept-Language:客户端接受的语言类型;

    Conncetion:客户端和服务器的连接方式,持续连接;

    4)请求主体

    可有可无,客户端向服务器端传递数据

    node.js中的HTTP模块

    可以模拟浏览器向服务器端发请求,也可以创建web服务器

    1)模拟浏览器

    http.get(url,callback)

      get-----请求的方法

      url-----请求的网址

      callback------回调函数,用来获取服务器端的响应

        res ----响应的对象

        res.statusCode------获取响应的状态码

        res.on('data',(buf)=>{})

          使用事件来获取服务器端响应的数据

          buf是服务器端响应的数据,格式为buffer数据

    例1:

    // 引入http模块
    const http=require('http');
    // 模拟浏览器向服务器发请求
    // 请求的方法和请求的url
    http.get('http://www.codebody.com',(res)=>{
        // res是服务器端响应的内容
        console.log(res.statusCode);   // 查看相应的状态码
        // 获取服务器端的数据
        // 事件:当有数据传输的时候会执行这个事件
        res.on('data',(buf)=>{
            console.log(buf.toString());
    
        });
    
    });

    例2:

    // 引入http模块
    const http=require('http');
    // 向中国气象网提供的接口发请求
    http.get('http://www.weather.com.cn/data/sk/101010100.html',(res)=>{
        // 响应状态码
        console.log(res.statusCode);
        res.on('data',(buf)=>{
            console.log(buf.toString());          // 结果是json对象
            
        });
    
    });

    2)创建web服务器

    var server=http.creatServer();       创建web服务器

    server.listen(3000)                      分配端口,监听3000端口的变化

    server.on('request',(req,res)=>{

    // 接受浏览器的请求,是一个事件,一旦有请求,自动执行

      req---请求的对象   

        ulr   请求的路径,显示端口后的部分

        method     请求的方法,直接通过地址栏默认使用get方法

        headers    请求的头信息

      res-----响应的对象

        write()    响应的内容为本文形式,向浏览器中写入文本;

        writeHead(302,{})  设置响应的状态码和响应的头信息;如果要跳转需要设置Location属性

        end()     响应结束

    });

    例1:无响应

    /* 练习:创建web服务器,监听3001端口,使用事件监听浏览器的请求,
    打印请求的方法,url;
    http://127.0.0.1:3001/admin/login.html
    http://localhost:3001/member/shopping.html  */
    
    /* 1、创建服务器 */
    // 引入http模块
    const http=require('http');
    // 创建web服务器
    var server=http.creatServer();
    // 使用3000这个端口
    // 监听3000的端口变化
    server.listen(3001,()=>{
        console.log('success');
    });
    /* 2、接受浏览器的请求 */
    //当有请求进来事件
    server.on('request',(req,res)=>{
        // req---请求的对象   
        console.log(req.url);       // 请求的路径
        console.log(req.method);    // 请求的方法
        console.log(req.headers);   // 请求的头信息
    });

    例2:有响应

    /* 1、创建服务器 */
    // 引入http模块
    const http=require('http');
    // 创建web服务器
    var server=http.creatServer();
    // 使用3000这个端口
    // 监听3000的端口变化
    server.listen(3000,()=>{
        console.log('success');
    });
    
    /* 2、接受浏览器的请求 */
    //当有请求进来事件
    server.on('request',(req,res)=>{
        // req---请求的对象   
        console.log(req.url);       // 请求的路径
        console.log(req.method);    // 请求的方法
        console.log(req.headers);   // 请求的头信息
        // res-----响应的对象
        res.write('this is respose');    // 多个write可以响应多行文本
        // 响应的重定向
        res.writeHead(302,{
            Location:'http://www.codebody.com'
        });
        // 响应结束,若不加,浏览器一致等待
        res.end();
    
    });

    例3:

    /* 创建web服务器,监听3000端口;接收浏览器端的请求;
        /login   响应文本   this is login page
        /member            this is member page
        /                  /member
        如果均没有匹配的     404   not found        */
    
    
    /* 1、创建服务器 */
    // 引入http模块
    const http=require('http');
    // 创建web服务器
    var server=http.creatServer();
    // 使用3000这个端口
    // 监听3000的端口变化
    server.listen(3000,()=>{
        console.log('success');
    });
    
    /* 2、接受浏览器的请求 */
    //当有请求进来事件
    server.on('request',(req,res)=>{
        // req---请求的对象   
        var url = req.url;       // 请求的路径
        // res-----响应的对象
        switch(url){
            case '/login':
                res.write('this is login page');
                break;
            case '/member':
                res.write('this is member page');
                break;
            case '/':
                res.writeHead(302,{
                    Location:'/member'
                });
                break;
            default:
                res.write('404 not found');
        }
        
        // 响应结束,若不加,浏览器一致等待
        res.end();
    
    });
  • 相关阅读:
    navicat for mysql (本人亲测,真实有效)
    python 8 days
    python 19 days
    python 20 days
    python 21 days
    python 10 days
    python 9 days
    python 14 days
    python 15 days
    python 16 days
  • 原文地址:https://www.cnblogs.com/hd-test/p/11855031.html
Copyright © 2011-2022 走看看