我提前向您道歉,因为我的问题措辞有问题,但请耐心等待,我会尽量做到准确。但是,我的问题有点含糊,很难问。
我最近一直在与我的一位同事讨论通过 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 返回它们是否有任何类型的标准?一个或另一个不好的做法吗? 或者这是个人喜好问题?
我主要担心的是发回大量空 key ,甚至从服务器发回无意的数据。 IE。如果您只想发回主键、描述和名称,但设置了另外两个属性,那么如果您对该对象进行 JSON 编码,您也会将它们发回。他的主要回应是只有应该发回的属性才应该公开,如果我们发回额外的数据,那又怎样?我只是很难同意,但想知道是否有任何理由支持一种或另一种方法。
提前感谢您的意见/回答。
最佳答案
我同意你的看法。您不应该通过 REST 响应直接公开您的模式,以免一些不道德的类型决定破解您的设置,现在对您的模式布局进行有根据的猜测,即使使用有效的 api key 也可能发生这种情况。
我只会返回请求的列,这些列会被更改,因此它们不会反射(reflect)模式。
关于PHP API 最佳实践 - 回显 json_encoded 对象 : bad or good?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27697794/