为IOS应用程序提供laravel服务的算法设计


Algorithm design for laravel services to an IOS App

我曾经为移动应用程序服务开发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');
}