用对象的JSON对象响应api端点

时间:2018-11-05 13:53:32

标签: javascript node.js rest express

嗯,这是我的第一个nodeJS应用程序。我一直在研究RESTful API最佳实践,但似乎没有一个可以直接解决我的问题。

这是我的数据保存在数据库中的格式:

'1212': {
    name: 'Plasma Blaster',
    id: 1212,
    price: 7000,
    quantity: 10,
    minimum: false,
    date: new Date().toISOString().replace('T', ' ').substr(0, 19),
    image: 'http://www.img.com/image.jpeg',
},

每个项目都以其唯一ID的字符串作为键保存。顺便说一句,我正在使用简单的数据结构作为db。

对端点 / api / v1 / store / products 的获取请求返回结果:

{
"completed": true,
"message": "get products sucessful",
"products": {
    "1370": {
        "name": "DH-17 blaster pistol",
        "id": 1370,
        "price": 600,
        "quantity": 10,
        "minimum": "false",
        "date": "2018-11-05 13:29",
        "image": "http://www.img.com/image.jpeg"
    },
    "1473": {
        "name": "C-22 fragmentation grenade",
        "id": 1473,
        "price": 200,
        "quantity": 16,
        "minimum": "false",
        "date": "2018-11-05 13:32",
        "image": "http://www.img.com/image.jpeg"
    },
    "8385": {
        "name": "Neon-Blue Crystal Lightsaber",
        "id": 8385,
        "price": 200,
        "quantity": 1,
        "minimum": "true",
        "date": "2018-11-05 13:35",
        "image": "http://www.img.com/image.jpeg"
    },
    "0836": {
        "name": "Treppus-2 vibroblade",
        "id": 836,
        "price": 2000,
        "quantity": 1,
        "minimum": "true",
        "date": "2018-11-05 13:36",
        "image": "http://www.img.com/image.jpeg"
    }
}

}

我需要知道这是否是可接受的结构。我之前使用过的Api响应结构是对象数组。我还将感谢您提供格式化方面的帮助。

2 个答案:

答案 0 :(得分:1)

关于JSON资源的“可接受的结构”并没有很多指导,大多数人只是在乎您是否一致。

也就是说,我认为您的“ complete”和“ message”键并不多,因为基于HTTP响应代码,它们应该是显而易见的(例如200 Success)。客户可能会发现,使用数组或对象来处理对象要容易一些,但这并不是一个问题

答案 1 :(得分:0)

可接受的结构取决于使用您的API的客户端的要求,有人称其为“合同”。而且,如果您需要使用工具进行定义,我建议您swagger

在您特别提到的有关json的问题上,对象数组的确对json的products键更有意义,但这仅仅是因为数组是最简单的结构。如果您要开发的产品需要一个数据结构,需要通过该数据结构通过其ID快速检索产品,那么您的结构会更好。