nodejs的express框架的response常用返回方式

常用的返回方式有四种

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

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请求,可以使用此方法做返回

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,获取返回值和模板,填充对应模板数据

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)

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

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');

适用情况:用来去重定向

下附Express官网文档地址:
Express


原文地址:ahuiyo的博客-nodejs的express框架的response常用返回方式

基于Node.js Express框架为微信小程序实现授权登录,前端通常是在小程序内引导用户点击授权按钮,通过微信开放平台提供的JSAPI完成身份验证。而后台处理主要包括获取code、换取access_token以及存储用户的openid等信息。 **前端(微信小程序)代码示例(js部分):** ```javascript Page({ onShareAppMessage() { // 分享接口,跳转到授权页面 return { title: '授权登录', path: '/login?from=miniProgram' }; }, login() { wx.login({ success(res) { // 获取code const code = res.code; this.postCodeToServer(code); } }); }, postCodeToServer(code) { wx.request({ url: 'http://your-server.com/api/login', // 替换为你的服务器地址 data: { code }, method: 'POST', header: { 'content-type': 'application/json' }, success(res) { // 登录成功,处理返回数据,如存储用户信息 console.log('登录响应:', res.data); } }); } }) ``` **后端(Node.js Express)代码示例:** ```javascript const express = require('express'); const axios = require('axios'); // 如果你的项目没用axios,可以替换为你实际使用的HTTP库 const app = express(); app.use(express.json()); // 接口接收前端的code并请求微信获取access_token app.post('/api/login', async (req, res) => { try { const code = req.body.code; const appId = 'your_app_id'; // 小程序的AppID const secret = 'your_secret'; // 小程序的AppSecret const accessTokenUrl = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${secret}&code=${code}&grant_type=authorization_code`; const response = await axios.get(accessTokenUrl); const accessTokenData = response.data; // 使用access_token换取openid,保存用户信息 // 这里只是一个简化的例子,实际操作应将openid存储到数据库或缓存 const openid = accessTokenData.openid; // Save user to database saveUser(openid); // 自定义函数保存用户 res.status(200).json({ message: '登录成功', openid }); } catch (error) { res.status(500).json({ error: '授权失败' }); } }); function saveUser(openid) { // 实现保存用户的逻辑 } app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` **
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值