有几个问题,我似乎无法找到明确的答案,我目前正在研究一个RESTful api,它将及时与少数客户端设备交互,目前我正在集中精力,在api上,以及与之配套的web应用程序。
api位于http://api.local, web应用程序位于http://webapplication.local。这个web应用程序是一个带有Backbone前端的Laravel安装。
我试图将一些数据从主干保存到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');
});
在前端(web应用程序)我像这样保存一个模型,
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
});
}
向web应用程序发送一个POST请求。Local/users/create方法,就像这样,
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());
你应该得到true
如果一切正常,false
如果有任何错误。