常用的返回方式有四种

res.json([status|body], [body])  以json的形式返回数据
res.render(view [, locals] [, callback])  返回对应的view和数据,此方法可以有回调函数,以处理可能出现的异常
res.send([body|status], [body])  返回自定义的数据,比如json或者404等状态
res.redirect([status,] path)  这个方法其实不是返回,而是跳转到另外一个url上

1、res.json([status|body], [body])

官方文档:
   返回一个 JSON 响应。 当res.send() 的参数是一个对象或者数组的时候, 会调用这个方法。 当然它也在复杂的空值(null, undefined, etc)JSON转换的时候很有用, 因为规范上这些对象不是合法的JSON。

例子:

res.json(null)
res.json({ user: 'tobi' })
res.json(500, { error: 'message' })
适用情况:如果你用ajax请求,可以使用此方法做返回

2 res.render(view [, locals] [, callback])

官方文档:
  渲染view, 同时向callback 传入渲染后的字符串。 callback如果不传的话,直接会把渲染后的字符串输出至请求方, 一般如果不需要再对渲染后的模板作操作,就不需要传callback。 当有错误发生时next(err)会被执行. 如果提供了callback参数,可能发生的错误和渲染的字符串都会被当作参数传入, 并且没有默认响应。

例子:

res.render('index', function(err, html){
// ...
});

res.render('user', { name: 'Tobi' }, function(err, html){
// ...
});

适用情况:不适用ajax,直接访问此url,获取返回值和模板,填充对应模板数据

3 res.send([body|status], [body]),它可以返回自定义的属性

当参数为一个 Buffer时 Content-Type 会被设置为 “application/octet-stream” 除非它之前有像下面的代码:

res.set('Content-Type', 'text/html');
res.send(new Buffer('some html'));

当参数为一个String时 Content-Type 默认设置为"text/html":

res.send('some html');

当参数为 Array 或者 Object 时 Express 会返回一个 JSON :

res.send({ user: 'tobi' })
res.send([1,2,3])

最后一条当一个Number 作为参数, 并且没有上面提到的任何一条在响应体里, Express会帮你设置一个响应体 比如200 会返回字符"OK", 404会返回"Not Found"等等.

res.send(200)
res.send(204)
res.send(500)

适用情况:当你需要返回自定义属性时

4 res.redirect([status], url)

举例说,当你添加了一个帖子,返回一个帖子的id,然后又想直接打开帖子的内容,这个就有了用途,它会跳转到对应的url上,就是重定向

官方文档:
  Redirects to the URL dervied from the specified path, with specified HTTP status code status.
If you don’t specify status, the status code defaults to “302 “Found”.
翻译:
  重定向到从指定的路径的URL,与指定的HTTP状态代码状态。如果不指定状态,该状态代码默认为302。

例子:

res.redirect('/foo/bar');
res.redirect('http://example.com');
res.redirect(301, 'http://example.com');
res.redirect('../login');

适用情况:用来去重定向

原文链接:https://blog.csdn.net/qq_41761591/article/details/86467827

最新文章

  1. 【BO】安装BO服务器时,oracle服务端安装ora-12514和12541的问题
  2. git如何放弃所有本地修改?
  3. 跑PIN码破解无线网络WIFI密码的原理分析(转)
  4. 一个类似bootstrap的foundation
  5. iOS开发如何实现消息推送机制
  6. 【转】System.DateTime.Now.ToString()的一些用法
  7. Qt 第一步,环境搭建与测试
  8. 跟我一起学extjs5(22--模块Form的自己定义的设计)
  9. spring security执行流程图
  10. CloudNotes
  11. My-Blog搭建过程:如何让一个网站从零到可以上线访问
  12. Lua5.3 注册表 _G _ENV
  13. Windows10用fiddler抓包Android应用(解决手机设置代理后无法上网,设置只抓app包)
  14. Codeforces1036G Sources and Sinks 【构造】【状态压缩】
  15. Zabbix3.4监控平台部署
  16. hdu 4366 Successor - CDQ分治 - 线段树 - 树分块
  17. 2、Keepalived提供日志与双主模型演示
  18. 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
  19. 手把手教你如何安装和使用Karma-Jasmine
  20. go语言之进阶篇面向对象编程

热门文章

  1. win11 改键盘映射
  2. python测试IP地址是否ping通
  3. apt-get update 报错 Repository ' InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
  4. JiaoZiVideoPlayer模拟用户点击,切换播放引擎!~
  5. react中如何正确使用setState(附例子)
  6. 运行yarn报错:error C:\liuyan\tools\echarts-5.4.0\node_modules\cwebp-bin: Command failed.
  7. tomcat多主多备
  8. 更改svn地址
  9. nginx文件上传模块 nginx_upload_module
  10. 使用layui时遇到的问题以及解决文章链接