我曾经为移动应用程序服务开发codeignitor,但现在我被指示使用Laravel而不是codeignitor。
在codeignitor中,我们可以直接从url调用控制器(在我的情况下是API),这样我们就可以发送一些数据。但是在Laravel中,我们不能直接从URL调用控制器,所以我们必须使用路由来调用控制器。那么,一个移动应用如何调用并发送数据给路由呢?路由如何调用API的相应服务呢?我是新来的laravel,所以任何帮助将是巨大的帮助。
谢谢。
这些与php或codeignitor的工作原理相同。
POST方法。在原生php和codeignitor中,通过指定POST方法获得输入字段。然而在Laravel中,你必须在route中指定它。我希望你对MVC有一些了解,你会像这样指定你的post路由....
Route::post('/login', 'Api@Signin');
这是一个简单的登录用户的服务。
public function Signin()
{
$validation = Validator::make(Request::all(),[
'email' => 'required',
'password' => 'required',
'device_type' => 'required',
'device_token' => 'required',
]);
if($validation->fails())
{
$finalResult = array('code' => 100,
'msg' => 'Data Entered Not Correct.',
'data' => array()
);
}
else
{
$login = User::where(
[
['email', '=', Input::get('email')],
['password', '=', md5(Input::get('password'))],
])->first();
if (is_null($login))
{
$finalResult = array('code' => 100,
'msg' => 'Your Account Does not exist.',
'data' => array()
);
}
else
{
$user= User::where('email', '=', Input::get('email'))->first();
$user->device_token = Input::get('device_token');
$user->device_type = Input::get('device_type');
$user->save();
$data = User::where(
[ 'email' =>Input::get('email')],
[ 'password' =>md5(Input::get('password'))]
)->get();
$finalResult = array('code' => 200,
'msg' => 'Success',
'data' => $data
);
}
}
echo json_encode($finalResult);
}
如果您想为API创建资源控制器,运行php artisan make:controller PhotoController
,它将为您的资源生成所有基本的CRUD操作(这里的图片)。现在在您的routes.php
文件中,您将看到可以添加Route::resource('photo', 'PhotoController');
,这将为您生成所有路由。运行php artisan route:list
可以看到所有路由的列表。参考:https://laravel.com/docs/5.1/controllers#restful-resource-controllers
在你的控制器方法中你做的事情和你在Codeignitor中做的一样。你可以用适当的参数从IOS调用get/post route它会为你做事。
编辑:在你的控制器方法中,你可以获得这样发送的数据:
public function someFunction(Request $request){
$data = $request->get('some_key_sent_from_device');
}