我正在使用Laravel构建一个REST API,并想知道是否有一种标准的,可接受的方式(Framework或Package)来返回复杂的集合作为响应。
我目前正在做的是,使用json
方法
public function show() {
$ad = Ad::with('category')->get()->find($id);
return Response::json($ad);
}
或者,只返回它自动返回的对象为json
public function show() {
$ad = Ad::with('category')->get()->find($id);
return $ad;
}
这种方法适用于上述方法,因为在关注json之前关系是预先包含的。但是,假设我需要在调用store()
之后返回保存的对象。像这样......
public function store(SaveAdRequest $request){
$ad = new Ad();
$ad->title = $request->title;
$ad->description = $request->description;
$ad->category = $request->category;
$ad->save();
return $ad;
}
在上面的store()
方法中,我无法直接获取刚刚保存的对象的关系。
那么,如何克服这个问题,是否有一种返回这些复杂对象而不是使用json的标准方法?
谢谢!
答案 0 :(得分:3)
从REST API返回数据没有标准方法。您可以返回JSON,XML,HTML。无论什么适合你。
常见的是,在通过网络发送之前,您已经以某种方式序列化(PHP)对象。最近JSON被广泛使用,因为它重量轻,易于人工处理和阅读。
复杂对象只是JSON对象中的另一个JSON对象。
答案 1 :(得分:1)
public function store(SaveAdRequest $request){
$ad = new Ad();
$ad->title = $request->title;
$ad->description = $request->description;
$ad->category = $request->category;
$ad->save();
$data = Ad::where('id', $ad->id)->with('category')->get();
return Response::json($data );
}