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没生成所以中文乱码。

相关文章
|
应用服务中间件 Apache nginx
Python Web 开发: 什么是 WSGI(Web Server Gateway Interface)?
Python Web 开发: 什么是 WSGI(Web Server Gateway Interface)?
221 1
|
算法 数据处理 计算机视觉
【MATLAB 】 MODWT 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 MODWT 信号分解+希尔伯特黄变换+边际谱算法
470 0
|
前端开发 API 数据安全/隐私保护
【第45期】一文解决React项目的权限管理
【第45期】一文解决React项目的权限管理
532 0
|
10月前
|
网络协议 物联网 网络安全
为啥IPv6没有完全代替IPv4?
【10月更文挑战第29天】
339 2
为啥IPv6没有完全代替IPv4?
|
12月前
|
JavaScript
在 Vue 3 组件通信方式中,Provide / Inject 与 Vuex 的区别是什么?
在 Vue 3 组件通信方式中,Provide / Inject 与 Vuex 的区别是什么?
409 65
|
11月前
|
缓存 JavaScript
|
12月前
|
JavaScript 前端开发 API
Vue3基础(十yi)___常用生命周期函数___setup___onMounted___onUpdated
本文介绍了Vue 3中的常用生命周期函数,包括`setup`、`onBeforeMount`、`onMounted`、`onBeforeUpdate`、`onUpdated`、`onBeforeUnmount`和`onUnmounted`,并解释了它们与Vue 2生命周期钩子的对应关系。文章通过代码示例展示了这些生命周期钩子在组件中的使用时机和场景。
322 0
|
移动开发 前端开发 安全
React Native环境搭建及配置问题
React Native环境搭建及配置问题
285 2
|
存储 安全 编译器
C++入门 | auto关键字、范围for、指针空值nullptr
C++入门 | auto关键字、范围for、指针空值nullptr
238 4
|
搜索推荐 API UED
路由的query参数和params参数
理解并正确使用Query参数和Params参数,是构建清晰、高效Web应用的关键之一。开发者应根据实际应用场景灵活选择参数类型,从而优化用户体验和应用性能。
573 6

热门文章

最新文章