如何在Laravel API

时间:2018-01-08 16:59:02

标签: php json laravel api

我正在使用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的标准方法?

谢谢!

2 个答案:

答案 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 );
}