【问题标题】:linking up Angular and Node.js: the function of .json()连接 Angular 和 Node.js:.json() 的功能
【发布时间】:2018-06-20 23:32:15
【问题描述】:

我正在学习一个教程,但我的服务器端代码中有一部分我并不真正理解。它向客户端的 Angular 服务文件发回响应,但我不明白为什么我需要 .json() 部分:

return res.status(500).json({
                    title: 'An error occurred',
                    error: err
                });

有人可以向我解释一下吗?

服务器端路由文件

var express = require('express');
var router = express.Router();

var Message = require('../models/message');

router.get('/', function (req, res, next) {
   // if we don't pass any arguments this means 'find all messages'
    Message.find()
        .exec(function(err, messages){
            if (err) {
                return res.status(500).json({
                    title: 'An error occurred',
                    error: err
                });
            }
            res.status(200).json({
                message:"'Success",
                obj: messages
            });
    });
});

router.post('/', function (req,res,next){
    var message = new Message({
        content: req.body.content
    });
    message.save(function(err, result) {
        if (err) {
            return res.status(500).json({
                title: 'An error occurred',
                error: err
            });
        }
        res.status(201).json({
            message: 'Saved message',
            // this object is what we'll receive in the front-end
            // and what we'll convert using the response.json() method
            obj: result
        })
    })
});

module.exports = router;

【问题讨论】:

  • 您可以使用 express 发送不同类型的响应。 .json 只是您可以通过回复发送的选项之一。它只是一个 JSON 对象。查看文档以获取回复expressjs.com/en/api.html#res
  • Angular 通常使用 AJAX 与服务器通信,这意味着 Angular 和服务器基本上是在互相发短信。 .json() 用于响应对象的文本表示,由 Angular 解析和处理。

标签: javascript json node.js angular


【解决方案1】:

.json 将响应的主体设置为您在参数中提供的 Javascript 对象的 JSON 序列化版本。

否则,如果您只是省略它,则响应正文中将没有任何内容(只有标头,包括状态代码)。

您还可以通过其他方式设置响应的正文。但 JSON 格式是与 Angular 交换信息的标准方式,并且与 node.js 一起使用很简单,因此通常是显而易见的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2017-10-21
    • 2017-07-08
    • 2011-10-17
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    相关资源
    最近更新 更多