我正在尝试为我正在创建的API创建一个动态端点,以便包含一些数据,但只有在需要时,我才能在多个地方使用它。
我们的想法是
api.domain.com/vehicle
带回基本车辆信息,但如果我这样做了
api.domain.com/vehicle?with=owners,history
然后,想法是要有一个映射
owners
和
history
一个只在需要时才返回数据的类。
这就是我目前拥有的。
public static function vehicle()
{
$with = isset($_GET['with']) ? $_GET['with'] : null;
$properties = explode(',', $with);
$result = ['vehicle' => Vehicle::data($id)];
foreach ($properties as $property) {
array_push($result, static::getPropertyResponse($property));
}
echo json_encode($result);
}
然后调用此函数。
protected static function getPropertyResponse($property)
{
$propertyMap = [
'owners' => Vehicle::owner($id),
'history' => Vehicle::history($id)
];
if (array_key_exists($property, $propertyMap)) {
return $propertyMap[$property];
}
return null;
}
然而,我得到的响应被嵌套在一个索引中,我不希望这样。我想要的格式是。。。
{
"vehicle": {
"make": "vehicle make"
},
"owners": {
"name": "owner name"
},
"history": {
"year": "26/01/2018"
}
}
但我得到的格式是。。。
{
"vehicle": {
"make": "vehicle make"
},
"0": {
"owners": {
"name": "owner name"
}
},
"1": {
"history": {
"year": "26/01/2018"
}
}
}
我该如何做才能使它不带索引返回?