嗯,这是我的第一个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响应结构是对象数组。我还将感谢您提供格式化方面的帮助。
答案 0 :(得分:1)
关于JSON资源的“可接受的结构”并没有很多指导,大多数人只是在乎您是否一致。
也就是说,我认为您的“ complete”和“ message”键并不多,因为基于HTTP响应代码,它们应该是显而易见的(例如200 Success)。客户可能会发现,使用数组或对象来处理对象要容易一些,但这并不是一个问题
答案 1 :(得分:0)
可接受的结构取决于使用您的API的客户端的要求,有人称其为“合同”。而且,如果您需要使用工具进行定义,我建议您swagger。
在您特别提到的有关json的问题上,对象数组的确对json的products
键更有意义,但这仅仅是因为数组是最简单的结构。如果您要开发的产品需要一个数据结构,需要通过该数据结构通过其ID快速检索产品,那么您的结构会更好。