res.send()和res.end()区别|学习笔记

简介: 快速学习 res.send()和res.end()区别

开发者学堂课程【Node.js 入门与实战res.send()和res.end()区别】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8312


res.send()和res.end()区别

 

一、res.send()和res.end()区别

index.js 代码块如下:

//入口文件

// 1.加载 express 模块

var express = require( ' express' );

// 2.创建一个 app 对象(类似于创建一个 server 对象)

var app = express();

//注册路由

//通过中间件监听指定的路由的请求

// req.url 中的 pathname 部分必须和/index 一致

app.get('/index'function (req, res) {

// body...

res.end('hello world!’);

});

// 3.启动服务

app. listen(9092, function () {

console . log( 'http://localhost:9092 );

});

此处 res.end 作用是把数据响应给浏览器,同时结束请求,其中可以接收两种数据类型参数,分别是字符串和 Buffer 对象类型参数,传来的字符串会响应给浏览器,同时结束这个请求

但是在使用 express 的时候,也可以不使用 res.end()方法,使用 express 中扩展的方法 res.send(),如,

app.get('/index'function (req, res) {

// body...

res.send('hello world!’);

});

然后进行测试,将网址直接复制 http://localhost:9092到浏览器打开会发现,因为没有路由的请求,所以没有执行 res.send 代码,因此需要一个匹配,

如,localhost:9092/index,回车访问,页面显示出 hello world!

通过这种方式好像显现不出res.send()和res.end()区别,要看到区别需将 res.end('hello world!’) 中加入你好世界!,

res.end('hello world! 你好世界!),再次运行到浏览器会发现,中文输出为乱码

同样的方法将 res.send('hello world!’) 改为 res.send('hello world! 你好世界!),

运行后发现成功输出 hello world! 你好世界!,没有乱码。res.end() 中文输出乱码和 res.send() 不乱码,这就是区别所在

参数类型不同,res.end() 支持参数类型有两种,为 Buffer 对象或 String 字符串,而 res.send() 参数支持多种参数类型,如 Buffer 对象、String 字符串、一个 object 对象,Array数组对象,支持参数类型多于res.end()

进入 Express 官网中找到Response下的res.send()方法,点击进入可看到 res.send() 方法定义,res.send([body])的[ ]中有一个参数,当调用 res.send() 时候可以传参数也可以不传,如果传的话会把这个数据发给浏览器结束这个请求,不传的话直接结束请求不发任何数据。而对于res.send()输出中文不乱码是因为send内部自动生成了一些响应报头,通过浏览器开发者工具点开index请求可查看生成报头,其中的一个响应报头就是 Content-Tpye 而且编码是 charset=uft-8,而 end没生成所以中文乱码。

相关文章
|
1月前
|
SQL 数据库
Result Set
【11月更文挑战第02天】
35 1
|
6月前
|
关系型数据库 MySQL Linux
FATAL ERROR: Could not find my_print_defaults
FATAL ERROR: Could not find my_print_defaults
179 0
|
前端开发
springboot05、封装返回结果集{state:““msg:““result:null}
springboot05、封装返回结果集{state:““msg:““result:null}
156 0
springboot05、封装返回结果集{state:““msg:““result:null}
|
前端开发 JavaScript Apache
Res.sendFile和res.render|学习笔记
快速学习 Res.sendFile 和 res.render
Res.sendFile和res.render|学习笔记
|
JavaScript 开发者
res.setHeader 方法和 res.writeHead 方法|学习笔记
快速学习 res.setHeader 方法和 res.writeHead 方法
|
JavaScript
认识 Express 的 res.send() 和 res.end()
在使用 Node.js 的服务端代码中,如果使用的是 Express 框架,那么对于一个请求,常常会有两种响应方式:
389 0
认识 Express 的 res.send() 和 res.end()
|
Java 编译器
Java堆栈,以及eqauls和==的区别
Java堆栈,以及eqauls和==的区别
138 0