request(http.IncomingMessage)和response(http.ServerResponse)对象介绍

request:服务器解析用户提交的http请求报文,将结果解析到request对象中,凡是要获取和用户请求的数据都可以通过request对象获取

request对象常用类型,继承自stream.Readable
request.headers请求报文头
request.rawHeaders原生请求报文头
request.httpVersion请求版本号
request.method请求方法
request.url请求路径

response:在服务器端用来向用户做出响应的对象,凡是需要向用户(客户端)响应操作,都需要通过response对象来进行

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

response.setHeader

response.statusCode

responsestatusMessage

response.write

1.request

var http=require('http');
http.createServer(function(req,res){
//1.获取所有请求报文头
//req.headers返回的是一个对象,里面返回了所有的请求报文头
console.log(req.headers); res.end('over'); }).listen(9090,function(){
console.log('http://localhost:9090');
})

var http=require('http');
http.createServer(function(req,res){

//request.rawHeaders返回的是一个数组,数组里保存的都是请求报文头的字符串
console.log(req.rawHeaders);

        res.end('over');

    }).listen(9090,function(){
console.log('http://localhost:9090');
})

var http=require('http');
http.createServer(function(req,res){ //2.httpVersion
//获取请求的客户端所使用的http版本
console.log(req.httpVersion); res.end('over'); }).listen(9090,function(){
console.log('http://localhost:9090');
})

var http=require('http');
http.createServer(function(req,res){
//3.method
//获取客户端请求使用的方法(POST,GET......)
console.log(req.method); //4.url
//获取请求的路径(不包含主机名,端口号,协议)
console.log(req.url); res.end('over'); }).listen(9090,function(){
console.log('http://localhost:9090');
})

2.response

var http=require('http');
http.createServer(function(req,res){ //1.response.write(chunk[, encoding][, callback])
//chunk可以是一个字符串或者一个buffer,第二个参数指定如何将它编写出一个字节流,默认utf-8,当数据块被刷新的时候,callback会调用
res.write('hello world! 你好世界');
res.write('hello world! 你好世界'); //每个请求都必须调用res.end
//结束请求,该方法通知服务器,所有请求头和响应主体都以发送,服务器将视为已完成,可以考虑本次响应结束。
//res.end()要响应数据的话,数据必须是String或者Buffer类型
res.end('over'); }).listen(9090,function(){
console.log('http://localhost:9090');
})

但这样会出现乱码,所以需要加请求报文头

//2.通过res.setHeader来设置响应报文头,不过如果我们不设置响应报文头,系统也会默认有响应报文头,并且默认已经发送给了浏览器
res.setHeader('Content-Type','text/plain;charset=utf-8');

//3.设置http响应状态码
//res.statusCode设置http响应状态码
//res.statusMessage设置http响应状态码对应的消息
res.statusCode=404;
res.statusMessage='NOT FOUND';

这个是响应状态码,我们需要不同的响应状态码来反馈给用户信息,哪怕已经找到页面

//4. res.writeHead()
//直接向客户端响应(写入)http响应报文头
//建议在res.write()和res.end()之前调用
//如果res.statusCode,res.statusMessage,res.setHeader和res.writeHead一起设置,但是内容不一样,服务器会响应res.writeHead
res.writeHead(404,'not found',{
'Content-Type':'text/plain;charset=utf-8'
})

 

node——request和response的常用对象的更多相关文章

  1. @ModelAttribute设置request、response、session对象

    利用spring web提供的@ModelAttribute注解 放在类方法的参数前面表示引用Model中的数据 @ModelAttribute放在类方法上面则表示该Action类中的每个请求调用之前 ...

  2. ASP.NET中的Request、Response、Server对象

    Request对象 Response.Write(Request.ApplicationPath) //应用根路径 Request.AppRelativeCurrentExecutionFilePat ...

  3. request和response——请求响应对象

    请求对象--request 获取get请求的值 一次请求,返回一个响应. 地址栏:http://127.0.0.1:8000/day3/get_request?lan=python 问号:代表请求参数 ...

  4. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  5. Request和Response。

    复习点:1.重定向问题  2.输出字符串到浏览器.3.文件下载需求:1. 页面显示超链接2. 点击超链接后弹出下载提示框3. 完成图片文件下载 Request和Response Request: 1. ...

  6. java web(四):request、response一些用法和文件的上传和下载

    上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...

  7. Java web课程学习之Request和Response

    request和response l HttpServletRequest l 请求转发 l HttpServletResponse l 请求重定向   请求流程 每次请求service(),都会由容 ...

  8. Servlet之Request和Response 解析

    原理 tomcat服务器会根据请求url中的资源路径,创建对应的Servlet的对象 tomcat服务器.会创建request和response对象,request对象中封装请求消息数据. tomca ...

  9. 【转】Django中的request与response对象

    关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...

随机推荐

  1. 网络教程(8)IP协议

    两台计算机间不是直接连接的,所以不能使用PPP协议,那么它们是怎么链接的呢? host A想把信息传给host B ethernet帧中的目标mac地址传到SFO后开始使用PPP协议   [Media ...

  2. socket 客户端的认证

    一:使用 hashlib 进行加密验证: # server.py 服务端 import os import socket import hashlib ​ def check_conn(conn): ...

  3. Mongodb学习总结(1)——常用NoSql数据库比较

    虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQ ...

  4. 告诉你 SQL 数据库与 NoSQL 数据库的区别

    简单来说 SQL 数据库和 NoSQL 数据库有着共同的目标:存储数据,但存储的方式不同 一. 表 SQL中的表结构具有严格的数据模式约束: 存储数据很难出错. NoSQL存储数据更加灵活自由:可能导 ...

  5. 2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence

    Easy Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  6. CF369E. ZS and The Birthday Paradox

    /* cf369E. ZS and The Birthday Paradox http://codeforces.com/contest/711/problem/E 抽屉原理+快速幂+逆元+勒让德定理 ...

  7. C#--二维码生成代码

    需要用到ThoughtWorks.QRCode.dll文件 string str = Server.UrlDecode(Request.QueryString["id"]); QR ...

  8. 工具-NuGet

    1.添加下载后,会将文件添加到当前项目的引用和bin目录中 ORM是一种插件/组件,将对集合对象的操作映射为对关系型数据库的操作,这个映射是相互的 来自为知笔记(Wiz)

  9. [Angular] Upgrade existing Angular app to Progressive Web App

    If you alread have an existing Angular application and want to upgrade to progressive web app. 1. In ...

  10. Java向上转型和向下转型(附具体样例)

                                                Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一 ...