【发布时间】: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