[英]REST API, data returning way for success and error
我正在编写REST API,并且想知道这是否是个好习惯。
以下是示例JSON响应。
错误响应
{
"code": 1100,
"status": false,
"message": "Values of imei/email/pin cannot be empty.",
"server_time": "2013-11-28 09:13:06"
}
成功响应,无数据
{
"code": 200,
"status": true,
"data": {
"id": "2",
"isNewParent": false,
"firstName": null,
"lastName": null,
"dob": null,
"gender": null,
"username": null
},
"server_time": "2013-11-28 09:07:23"
}
成功响应,有数据
{
"code": 200,
"status": true,
"data": {
"id": "3",
"isNewParent": true,
"firstName": "Saman",
"lastName": "kalhara",
"dob": 2002-10-29,
"gender": 0,
"username": 'saman88'
},
"server_time": "2013-11-28 10:07:23"
}
问题是,关于没有数据的成功响应,一些移动开发人员要求json响应仅包含带有值的标签的标签,并跳过空值。 所以看起来
{
"code": 200,
"status": true,
"data": {
"id": "2",
"isNewParent": false,
},
"server_time": "2013-11-28 09:07:23"
}
我在做什么方面陷入困境。 我更喜欢它的完成方式,并且想知道这是否会导致API请求性能方面的任何缓慢。
它不应该引起任何缓慢。 如果有的话,您将减少必须进行JSON转换的键/值的数量。 但是,除非您收到不可思议的流量并且不进行缓存,否则删除null
值不会对性能产生巨大影响。
但是,在这种情况下,我会说最佳实践取决于您父亲的存储方式。 我不知道某物如何具有ID,但是没有用户名,Dob,性别,名字或姓氏。 是否有一个原因?
除非ID有意义,否则我对这两种解决方案的反对都是这样的响应:
{
"code": 200,
"status": true,
"data": {},
"server_time": "2013-11-28 10:07:23"
}
另外,如果要严格遵循REST,则应该使用内置的HTTP状态代码,并且仅在HTTP状态不能完全解释响应时才添加其他错误信息。
鉴于响应应返回数据,我想说,为了保持一致性,您应该为每个包含数据的响应维护一个恒定的结构。 这样,开发人员不必进行过多检查即可确保在检索它们之前定义了他们需要的所有字段。 确定是否定义一个字段就像data['field'] === null
一样容易,所以我不理解开发人员的不安。 如果他们的抱怨是基于保存字节,除非他们发出数千个请求,否则在数据对象中包含几个null值根本不会有太大的区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.