【问题标题】:Backbone and Laravel API骨干网和 Laravel API
【发布时间】:2014-09-05 14:42:58
【问题描述】:

我似乎无法找到确定答案的几个问题,我目前正在开发一个 RESTful api,它会及时与少数客户端设备进行交互,目前我正专注于API 以及与之配套的网络应用程序。

API 位于 http://api.local,Web 应用程序位于 http://webapplication.local。 Web 应用程序是带有 Backbone 前端的 Laravel 安装。

我正在尝试将 Backbone 中的一些数据保存到 API 的数据库中。所以 API 的保存方法是这样的,

public function store()
{
    $user_details = Input::all();

    $user = new User;

    $user->firstname = $user_details['firstname'];
    $user->surname = $user_details['surname'];
    $user->email = $user_details['email'];
    $user->password = Hash::make($user_details['password']);
    $user->remember_token = '';

    $user->save();

    return Response::json($user_details, 200);
}

它有一条看起来像这样的路线,

Route::group(['prefix' => 'api/v1'], function(){

   Route::get('users', 'UsersController@index');
   Route::get('users/{id}', 'UsersController@get');
   Route::post('users/create', 'UsersController@store');
   /**
   * PUT request to edit the database record
   * @todo: Need to be a PUT request in the long run
   */
   Route::post('users/update/{id}', 'UsersController@update');
   /**
   * DELETE request to edit the database record
   * @todo: Need to be a DELETE request in the long run
   */
   Route::post('users/delete/{id}', 'UsersController@delete');

});

在前端(网络应用程序)我正在保存这样的模型,

saveNewUser: function(e) {

    e.preventDefault()
    var data = this.$el.find('.js-create-new-user').serializeJSON();

    // create a new model
    var User = new app.User();

    User.save(data, {
        success: function(model, response){
            console.log(model);
            console.log(response);
            console.log("sucess");
        },
        error: function(model, response) {
            console.log(model);
        },
        wait:true
    });

}

这会向 webapplication.local/users/create 方法发送一个 POST 请求,如下所示,

public function create()
    {
        $data = Input::all();

        $curl = new Curl\Curl();

        $curl->post('http://pops.local/api/v1/users/create', $data);

        if ($curl->error) {
            return Response::json($curl->error, $curl->error_code);
        }
        else {
          return Response::json($curl->response, 200);
        }
    }

如果我查看$curl->response,我会看到正在发送的数据对象——我认为这意味着 cURL 请求已成功发送。然而,API 的数据库中没有任何更新?

我做错了吗? Backbone 是否应该直接向 API 发送/发出请求,而将 PHP 留在 Web 应用程序之后去做 API 不做的事情,例如调整图像大小等?

【问题讨论】:

  • 您可以直接从骨干网发送请求,但您不必这样做。一切看起来都很好。请检查从$user->save(); (dd($user->save());) 返回的内容
  • @Kasyx 是你创建这个答案我会勾选它,这有助于让它工作
  • 谢谢,答案已准备就绪。

标签: php api backbone.js curl laravel


【解决方案1】:

您可以直接从骨干网发送请求,但您不必这样做。一切看起来都很好。通过编写类似的内容检查从$user->save(); 返回的内容:

dd($user->save());

如果一切正常,你应该得到true,如果有任何错误,你应该得到false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2015-01-15
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多