• nodejs使用http模块写web的request和 response


    一.request 对象

    • request 对象类型 <http.IncomingMessage>, 继承自stream.Readable

    • request 对象常用成员

      • request.headers  

        返回的是一个对象,这个对象中包含了所有的请求报文头
      • request.rawHeaders

        返回的是一个数组,数组中保存的都是请求报文头的字符串
      • request.httpVersion

        获取请求客户端所使用的http版本  
      • request.method

        获取客户端请求使用的方法(POST、GET、....)
      • request.url

        获取这次请求的路径(获取请求报文中的请求路径,不包含主机名称、端口号、协议)

    二.response 对象

    • response 对象类型 <http.ServerResponse>

    • response 对象常用成员

      • response.writeHead(statusCode[, statusMessage][, headers])

        1. This method must only be called once on a message and it must be called before response.end() is called.

        • 这个方法在每次请求响应前都必须被调用(只能调用一次)。并且必须在end()方法调用前调用

    2. If you call response.write() or response.end() before calling this, 
    the implicit/mutable headers will be calculated and call this function for you. - 如果在调用writeHead()方法之前调用了write() 或 end()方法,系统会自动帮你调用writeHead()方法,并且会生成默认的响应头
    3. When headers have been set with response.setHeader(), they will be merged with any headers passed to response.writeHead(),
    with the headers passed to response.writeHead() given precedence. - 如果通过 res.setHeader() 也设置了响应头,那么系统会将serHeader()设置的响应头和writeHead()设置的响应头合并。 并且writeHead()的设置优先
    // 示例代码:
    res.writeHead(200, 'OK', {
      'Content-Type': 'text/html; charset=utf-8',
      'Content-Length': Buffer.byteLength(msg)
    });
    • response.write(chunk[, encoding][, callback])

      • 参数1:要写入的数据,可以是字符串或二进制数据,必填

      • 参数2:编码,默认是utf8,选填。

      • 参数3:回调函数,选填。

    • response.end([data][, encoding][, callback])

      • 结束响应。

      • This method signals to the server that all of the response headers and body have been sent; that server should consider this message complete. The method, response.end(), MUST be called on each response.

      • res.end()这个方法告诉服务器所有要发送的响应头和响应体都发送完毕了。可以人为这次响应结束了。

      • 同时每次响应都必须调用该方法,用来结束响应

    * 参数1:结束响应前要发送的数据,选填。
    * 参数2:编码,选填。
    * 参数3:回调函数,选填。
    • response.setHeader(name, value)

      • 设置响应报文头

    • response.statusCode

      • 设置或读取http响应码

    • response.statusMessage

      • 设置或读取http响应状态消息

    总结:

      demo1

    wirtehead(200, "ok", {'Content-Type': 'text/html; charset=utf-8', 'Content-Length': Buffer.byteLength(msg)})

      demo2

    response.statusCode(200)
    response.statusMessage('ok')
    response.setHeader('Content-Type', 'text/html; charset=utf-8')
    response.setHeader('Content-Length', Buffer.byteLength(msg))

      demo和demo2的效果是一样的,并且demo1的优先级更高,推荐demo1的用法。

  • 相关阅读:
    Oracle体系结构之控制文件管理
    Oracle体系结构之参数文件管理
    Oracle体系结构之oracle密码文件管理
    Oracle备份恢复之Oracle11G R2用exp无法导出空表解决方法
    Oracle体系结构之OFM管理
    Oracle实例和Oracle数据库(Oracle体系结构)
    联机重做日志文件管理
    Oracle体系结构之控制文件管理
    (转)超全整理!Linux性能分析工具汇总合集
    (转)Linux 系统性能分析工具图解读(一、二)
  • 原文地址:https://www.cnblogs.com/tjp40922/p/16121048.html
Copyright © 2020-2023  润新知