【发布时间】:2015-02-26 03:59:17
【问题描述】:
我提前道歉,因为我无法表达我的问题,但请多多包涵,我会尽量做到准确。但是,我的问题有点模糊,很难问。
我最近一直在与我的一位同事讨论有关通过 PHP 从 RESTful API 发回的响应。我们的不同之处在于服务器的响应。
他的论点是只对原始对象(它是数据库表中一行数据的 PHP 对象表示)进行 json_encode。但是,我发现问题在于,例如,您只需要发回几列数据。
例如,假设您要返回一个对象,您所需要的只是表中的主键、描述和名称。但是,该对象还具有其他用途的属性(var1、var2 等) 如果像这样回显:
echo(json_encode($object));
JSON 看起来像这样:
{
"primary_key": 4,
"description": "hello",
"name": "name namerton",
"var1": null,
"var2": null,
"var3": null,
"var4": null,
"var5": null,
"var6": null
}
我通常更喜欢通过以下方式循环访问我的对象:
$objectArray = array(
"primary_key" => $object->primary_key,
"description" => $object->description,
"name" => $object->name
);
echo(json_encode($objectArray));
将数据转换为数组,返回一个更像这样的 JSON 结果:
{
"primary_key": 4,
"description": "hello",
"name": "name namerton"
}
我想,我的问题是,对于 json 编码对象并从 API 返回它们是否有任何标准?一种或另一种是不好的做法吗? 还是这是个人喜好问题?
我主要担心发回大量空键,甚至从服务器发回无意的数据。 IE。如果您只希望发回主键、描述和名称,但设置了其他两个属性,那么如果您对该对象进行 JSON 编码,您也会将它们发回。他的主要回应是,只有应该发回的属性才应该是公开的,如果我们发回额外的数据,那又如何?我只是很难同意,但想知道一种方法或其他方法是否有任何理由受到青睐。
提前感谢您的意见/回答。
【问题讨论】:
-
只是添加到以下答案:如果这是您可以考虑的因素,更广泛的对象可能允许更大的缓存可能性。