Node.js后端开发 - 进阶篇 #3 express详解res.send()和res.end()的区别

31 篇文章 47 订阅
订阅专栏

文章目录

一、前言

二、express之实现 Hello World 详解

1、代码详解

2、注意点-路由信息对应

三、res.send()和res.end()的区别

1、那么它们有什么区别呢?

(1)、响应报文头的区别

(2)、参数类型区别

2、res.send()和res.end()之乱码示例

(1)res.end()响应中文乱码

(2)res.send()自动生成响应报文头,不乱码


一、前言

上篇文章我们介绍了express框架它的官网如何查看、npm官网对express提供的一些示例说明、express如何安装以及初步实现一个“Hello World”的程序,详细了解可参考我的博文: Node.js后端开发 - 进阶篇 #2 express使用之HelloWorld 这篇文章我们将具体讲解上篇的“Hello World”程序代码以及res.send()和res.end()的区别

二、express之实现 Hello World 详解

1、代码详解

上篇文章初步实现一个“Hello World”的程序,在这里我进行了详细的注释、代码只稍微作了修改

//1、加载express模块
// const express:声明express变量, 
// 这个express变量它是一个对象,它也可以作为一个函数来调用
const express = require('express');

//2、创建一个app对象( 类似于创建一个server对象 )
const app = express();//express作为一个函数来调用

//---------注册路由---------
//通过中间件监听指定的路由的请求
//app.get表示只能处理get请求,斜杆表示当前目录。
//必须满足get请求 和 当前目录,才会执行回调函数。
//那么这个函数就被我们成为中间件,其实中间件就是一个函数。
//这段代码包括两部分信息,即路由信息、路由的处理方法
app.get('/', function (req, res) { 
    res.send('Express:Hello World')//响应给浏览器,结束请求
});

//3、启动服务
//参数1:要监听的端口  参数2:回调函数
app.listen(3000,function() {
    console.log('http://localhost:3030');
});

我们启动服务器来看看:

bogon:express-demo luminal$ node index
http://localhost:3030

然后在浏览器上输入地址: http://localhost:3000/

2、注意点-路由信息对应

当把代码路由信息

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

改成,如下:

app.get('/xxx', function (req, res)

浏览输入请求地址的时候,需对应改变为: http://localhost:3000/xxx,否则访问不了信息!

即:req.url中的 pathname部分必须和 /xxx 一致

三、res.send()和res.end()的区别

我们有没有发现express,在回调函数里面调用的是res.send()

res.send('Express:Hello World')//响应给浏览器,结束请求

而我在讲《Node.js后端开发 - 基础篇》的时候,用的是res.end()。

res.send()方法比res.end()更好用,它是express框架帮我们扩展的方法。

1、那么它们有什么区别呢?

(1)、响应报文头的区别

res.send() 会默认自动发送更多的响应报文头,其中就包括 Content-type: text/html; charset=utf-8,所以没有乱码

(2)、参数类型区别

res.end() 参数类型只能是 Buffer对象 或 字符串

res.send() 参数类型可以是一个Buffer对象、一个字符串、一个对象、一个数组

我们可以去express官网查看它的api的一些介绍,如下:

进入express中文网: Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网,API参考手册--->4.x--->Response对象--->res.send()方法

这个用中括号括起来的 [body] ,代表这个send方法,可以传参数也可以不传参数。

传参数,发送数据结束请求;

不传参数,直接结束请求

2、res.send()和res.end()之乱码示例

(1)res.end()响应中文乱码

当res.end()方法里面传入中文,在浏览器上面你会发现它会出现乱码,代码修改如下:

//1、加载express模块
// const express:声明express变量,
// 这个express变量它是一个对象,它也可以作为一个函数来调用
const express = require('express');

//2、创建一个app对象( 类似于创建一个server对象 )
const app = express();//express作为一个函数来调用

//---------注册路由---------
app.get('/xxx', function (req, res) { 
    //res.send('Express:Hello World,好好好')//响应给浏览器,结束请求
    res.end('Express: Hello World, 好好好')
});

//3、启动服务
//参数1:要监听的端口  参数2:回调函数
app.listen(3000,function() {
    console.log('http://localhost:3030');
});

运行代码,浏览器输入相应的地址会出现乱码,如下:

(2)res.send()自动生成响应报文头,不乱码

而我们使用res.send传入中文就不会出现乱码,在我的谷歌浏览器输入: http://localhost:3000/xxx

然后我们来看看它自动生成的响应报文头,我们来看看谷歌浏览器里面生成的内容,

如下图,--->更多工具--->开发者工具

这里注意,有可能状态码为304,代表缓存了

我们右击,Clear browser cache 清理缓存

我们刷新浏览器,状态码为200,代表请求成功。

这时候我们可以看到:

Response Headers 响应报文头,

Content-Type 响应内容类型、编码为utf-8

Content-Length 内容字节长度为29(utf-8编码:英文字母、英文符号占一个字节,中文文字占3个字节)

Node.js学习笔记--进阶之路
JackieDYH的博客
05-10 1897
简介 Node 是一个软件, 可以脱离浏览器, 独立执行JS文件 Node实现了ECMAScript标准, 所以语言跟JavaScript基本一致 因为想成为全栈开发(前后端都可以的大拿) PHP等语言是阻塞的, 性能不如nodeJS node是事件驱动, 非阻塞的 Node中是大量的, 事件和回调函数 单线程(主线程单线程,后台I/O线程池) 跨平台 (Node软件可以安装在window系统/linux系统/mac系统/等等) 安装Node ...
认识 Express 的 res.send() 和 res.end()
编程三昧
01-21 2242
在使用 Node.js 的服务端代码中,如果使用的是 Express 框架,那么对于一个请求,常常会有两种响应方式……
res.send与res.end
Demolist的博客
05-25 414
说明应用场景中,res.send和res.end区别
nodeJs中res.send()和res.end()的区别
weixin_46021092的博客
03-24 4152
前几天遇到一个问题:在写js时把res.end()和res.send()弄混了,之后查资料得到以下结果,记录避免忘记。 解决: 1.如果服务器端没有数据要返回到客户端的话,就直接用res.end()。 2.如果服务器需要有数据返回到客户端的话,就需要用res.send(). 语法: res.send([body]) body的参数可以是Buffer对象,String,对象或Array,传入number是没反应的。 res.end()将结束响应过程,其实这个也可以用来传数据,但是参数只限定字符串和Buffer
nodeJs中res.end和res.send 区别
weixin_33834628的博客
08-14 5407
为什么80%的码农都做不了架构师?>>> ...
res.end与res.send使用和区别
最新发布
qq_44741577的博客
03-05 676
res.send()是express框架帮我们扩展的方法。
转载:nodejs res.end和res.send 区别
weixin_34242509的博客
10-21 433
原文链接:http://blog.csdn.net/genziisme/article/details/70144334 简单来说就是 如果服务器端没有数据返回到客户端那么就可以用res.end 但是 如果服务器端有数据返回到客户端这个时候必须用res.send,不能用 res.end(会报错) 例子: var express = require('express'...
Node.js创建一个Express服务的方法详解
10-15
Node.js环境中,Express是一个非常流行的web应用框架,它简化了构建RESTful API和服务的过程。本文将详细讲解如何使用Node.js创建一个基于Express的服务。 首先,让我们深入理解创建一个基本的HttpServer服务端。...
Node.js Express 框架 POST方法详解
12-23
Node.js中,Express是一个非常流行的web开发框架,它简化了构建RESTful API和服务的过程。在本篇关于“Node.js Express框架POST方法详解”的内容中,我们将深入探讨如何使用Express处理HTTP请求中的POST方法,特别...
itp405-node:Node.JS 初学者作业
06-12
**Node.js初学者作业详解** Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它让开发者可以用JavaScript在服务器端编写程序。Node.js以其高效的非阻塞I/O模型和事件驱动特性,成为构建高性能网络应用的理想...
Express框架中res.write、res.end及res.send 、res.json方法之间的区别
青春木鱼的博客
05-07 9071
Express框架中res.write、res.end及res.send 、res.json方法之间的区别?泣血整理。Express响应中常用的四种API:res.write() | res.end() | res.send() | res.json(),这4个API方法,都可以发送HTTP响应,返回浏览器的请求数据,不过用法之间各有区别
Node.js —— express中 res.json( )和 res.send( )
热门推荐
starter_____的博客
01-15 5万+
1、res.json([body]) 发送一个json的响应。这个方法和将一个对象或者一个数组作为参数传递给res.send()方法的效果相同。不过,你可以使用这个方法来转换其他的值到json,例如null,undefined。(虽然这些都是技术上无效的JSON)。 res.json(null); res.json({user:'tobi'}); res.status(500).json(
NodeJs——(14)express框架的send()方法简介
weixin_34235457的博客
07-08 625
(35)express框架的send方法 ①send方法用的还挺多的,因此需要明确其作用; ②原型是: res.send([body|status], [body]) 即既可以直接发送内容,也可以第一个参数状态,第二个参数内容。 如果直接发送内容的话,状态会被自动补全; ③发送的内容: 示例: res.send(newBuffer('...
nodejs res.end和res.send 区别
genziisme的专栏
04-12 2万+
简单来说就是 如果服务器端没有数据返回到客户端 那么就可以用 res.end 但是 如果 服务器端有数据返回到客户端 这个时候必须用res.send ,不能用 res.end(会报错) 例子: var express = require('express'); var app = express(); var mysql = require('mysql'); var conn...
【无标题】res.send和res.end
aybaiwan的博客
04-20 187
body的参数可以是Buffer对象,String,对象或Array,传入number是没反应的。res.end()将结束响应过程,也可以用来传数据,参数只限定字符串和Buffer。如果服务器端没有数据要返回到客户端的话,就直接用res.end()。如果服务器需要有数据返回到客户端的话,就需要用res.send().语法:res.send([body])
nodejs通过res.end方法返回中文乱码解决
qq_53987671的博客
02-22 1225
问题: 代码 请求结果 解决方法: 在res.end方法之前加上 res.writeHead(200, { "Content-Type": "text/plain;charset=utf-8" }); 结果:
Express框架中的res.send()方法响应和app.use中间件和错误处理中间件和try...catch捕获异常和模块化路由和静态资源和express-art-template模板引擎
清风的博客
10-16 3522
Express框架 Express是一个基于Node平台的web应用开发框架,它提供了强大的特性,帮助创建各种web应用,使用npm install express命令下载; 特点: 1.提供了方便简单的路由定义; 2.对获取http请求参数进行了简化处理; 3.对模板引擎支持程度高,方便渲染html页面; 4.提供了中间件机制有效控制http请求; 5.拥有大量第三方中间件对功能进行扩展; 1....
Express 解决中文乱码
sudo0m的博客
06-19 849
方法,向客户端发送中文内容时,就会出现乱码问题,此时需要手动设置发送内容编码格式。
res.end和res.send区别
qizaiya的博客
10-11 324
其实express给我们带来了很多方便,res.send会自动发送很多请求报文,其中就包括。相信不少在学习nodejs的小伙伴出现过这种疑惑:响应报文endsend有什么区别呢?只能在用express创建的服务中使用,传统的只能用。是express框架的方法。就不会出现乱码情况,只是为什么呢?都可以设置响应体内容,框架服务中,可以有多个。
写文章

热门文章

  • Mac突然无法连网 或 连上网可以上QQ、微信等,但无法打开网页 35072
  • -bash: npm: command not found 29909
  • 升级到Android Studio 3.2.1 ,报 org.gradle.internal.exceptions.LocationAwareException 28465
  • The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received 24043
  • 运行项目报错 proxy error: could not proxy request... 23334

分类专栏

  • 鸿蒙开发、web前端界面和样式快速构建篇【计划10-20篇】 付费 5篇
  • java高质量笔记 付费 5篇
  • 实战公司项目功能记录 付费 11篇
  • 全网最全谷粒商城笔记记录【值不值看试读内容,学生可免费】 付费 15篇
  • Java上班工作核心点整理 2篇
  • Android核心点复习 10篇
  • 博客导航目录 7篇
  • java源码系列详解 16篇
  • MySQL 高级 4篇
  • SpringBoot系列 9篇
  • 快速上手Java后端,让你入职企业拿高新 29篇
  • 安卓人脸识别_硬件串口通信_企业项目实战 3篇
  • java快速入门笔记 14篇
  • 小程序开发 6篇
  • Java_Android基础学习回顾-笔记系统整理 7篇
  • 安卓之Kotlin实战教程 7篇
  • 疯狂Kotlin讲义阅读实践篇 13篇
  • Android开发艺术探索知识回顾 9篇
  • java基础 60篇
  • 安卓工作总结之高级教程 2篇
  • Java设计模式 3篇
  • 安卓开发 73篇
  • JNI 和 NDK编程 9篇
  • 项目发布-攻防安全 6篇
  • AS使用的那些事 8篇
  • 第三方框架 5篇
  • 流行:音视频、Flutter、Kotlin 3篇
  • 图片绘制相关 8篇
  • Android精华教程 9篇
  • --Android源码系列 6篇
  • --搭建自己的Android服务器端 1篇
  • javaEE后端开发 50篇
  • nodejs后端开发 31篇
  • ios开发之路 4篇
  • web前端(H5) 83篇
  • 错误累积(错题本) 78篇
  • 综合信息 27篇
  • Mac操作 12篇
  • 网易博客迁移整理记录 20篇
  • 面试篇章
  • 工具使用 7篇
  • 鸡汤来一碗 10篇

最新评论

  • -bash: npm: command not found

    Hi竹子: 重新安装node,那你在nvm中安装的不使用吗?

  • 01、什么是ip、协议、端口号知道吗?计算机网络通信的组成是什么?

    CSDN-Ada助手: 推荐 网络 技能树:https://edu.csdn.net/skill/network?utm_source=AI_act_network

  • 01、什么是ip、协议、端口号知道吗?计算机网络通信的组成是什么?

    普通网友: 这篇文章真是一篇佳作!作者运用了生动有趣的语言,将枯燥的理论知识娓娓道来,让人如沐春风。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 02、网络协议、IP地址、网络状况、网络异质性问题的解决

    普通网友: 优质好文,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 02、网络协议、IP地址、网络状况、网络异质性问题的解决

    普通网友: 这篇文章真是一篇佳作!作者运用了生动有趣的语言,将枯燥的理论知识娓娓道来,让人如沐春风。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

最新文章

  • 鸿蒙开发笔记_ArkTS开发语言介绍_06、自定义组件
  • 鸿蒙开发笔记_电商严选02_登录页面跳转到我的页面、并传值
  • 鸿蒙开发笔记_电商严选01_登录页面(静态页面)
2024年9篇
2023年8篇
2022年85篇
2021年42篇
2020年206篇
2019年184篇
2018年57篇
2017年16篇
2013年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家冀州玻璃钢卡通座椅雕塑吉林省玻璃钢雕塑设计濮阳玻璃钢广场卡通雕塑制作湖北人物玻璃钢雕塑生产厂家山东公园玻璃钢雕塑哪家便宜浙江季节性商场美陈销售公司镂空玻璃钢景观雕塑报价济宁玻璃钢雕塑市场商场美陈cad临汾玻璃钢雕塑定制价格巴彦淖尔玻璃钢广场雕塑阳江商场美陈装饰武汉步行街玻璃钢雕塑市场漳州玻璃钢仿真水果雕塑定制江苏玻璃钢传统人物雕塑玻璃钢雕塑家自贡玻璃钢气球雕塑澄江市玻璃钢雕塑售价深圳欧式玻璃钢卡通雕塑白银卡通玻璃钢雕塑多少钱武汉公园标识玻璃钢雕塑厂家景观玻璃钢卡通雕塑代理价格禅城玻璃钢人物雕塑欢迎前来咨询沈阳市商场美陈玻璃钢景观雕塑制作工厂沈阳水果玻璃钢雕塑造型贴金河北节庆商场美陈市场报价禄丰市玻璃钢雕塑定制东莞透明玻璃钢雕塑供应商玻璃钢假山雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化