Należy opracować prosty interfejs API do dostępu do swoich danych aplikacji z Android klient:
Trasy
Przede wszystkim trzeba stworzyć jakieś konkretne trasy dla API, przez które będziesz służyć dane w formacie JSON
Authentication
Trasy interfejsu API powinny obsługiwać uwierzytelnianie w inny sposób pod względem tego, co teraz robisz: nie można używać klasycznego podejścia opartego na sesji. Zamiast tego należy zastosować podejście bazowe lub oparte na tokenach. Masz różne alternatywy, są to jedne z najczęściej używanych (od najprostszych do najbardziej skomplikowanych)
Laravel HTTP Basic Authentication
Laravel Json Web Token Authentication
Laravel OAUTH2
danych Acess
Po skonfigurowaniu tras i uwierzytelnieniu musisz podawać dane za pośrednictwem tras API. Ponieważ używasz tych samych danych w trasach aplikacji i trasach API, możesz owijać logikę budowania i pobierania danych w usługach, a także korzystać z usług, aby uzyskać dane zarówno na trasach aplikacji, jak i trasach API.
Stosując różne kontrolery do API i APP trasach, masz:
//APP Controller method for route: www.app.com/app-route/users
public function getUsers()
{
//wrap the logic to build the data inside the service
$service = App::make('your_service');
//once is ready, get the built data from the service
$data = $service->getData();
return View("View-Path", array("Data" => $data));
}
//API Controller method for route: www.app.com/api/users
public function getUsers()
{
//use the same service to build and get the data you need
$service = App::make('your_service');
$data = $service->getData();
return response()->json($data);
}
W ten sposób można:
budynek danych hermetyzacji i retrieveng w usługach, tak że don” t potrzeba duplikowania kodu do pobierania danych między trasami APP i API
Mieć różne c ontrollery, aby uzyskać dostęp do tras APP lub API; dzięki czemu można uzyskać dane, przekształcenie go jak trzeba i służyć zarówno do poglądów lub klientów api
O klasę usług
w odniesieniu do klasy usługi już wspomniano, może to być po prostu jedna lub wiele klas opakowania, których używasz zarówno w kontrolerach API, jak i APP do budowania i pobierania danych bez powtarzania kodu. Struktura takich zajęć zależy od sposobu działania aplikacji.
Na przykład załóżmy, trzeba obliczyć pewne dane dla projektu każdego użytkownika, należy go przechowywać w zmiennej, a następnie wysłać go do viev:
public function getUsers($request)
{
$user = Users::with('projects')->find($request->user_id)->get();
$data = [];
foreach ($user->projects as $p)
{
//compute some data you need and store it in $data;
}
return View("View-Path", array("Data" => $data));
}
Teraz, jeśli chcesz zrobić to samo w API kontroler, musisz powtórzyć ten kod, aby uzyskać projekty i utworzyć dane. Aby tego uniknąć, można „owinąć” dostęp do danych w klasie usług i używać tej samej klasy w kontrolerach BOH:
klasy usługi
public class UserDataBuilder
{
protected $user;
public function setUser(Authenticatable $user)
{
$this->user = $user;
}
public function getData()
{
$user = Users::with('projects')->find($this-user->id)->get();
$data = [];
foreach ($user->projects as $p)
{
//compute some data you need and store it in $data;
}
return $data;
}
}
i używać tej samej klasy, zarówno czynnych i Kontrolery APP:
//APP controller: get the data and pass to the view
public function getUsers($request)
{
$service = App::make(UserDataBuilder::class);
$service->setUser(User::find($request->user_id)->get());
return View("View-Path", array("Data" => $service->getData());
}
//API controller: get the data and convert to JSON
public function getUsers($request)
{
$service = App::make(UserDataBuilder::class);
$service->setUser(User::find(1)->get());
return response()->json($data);
}
Nie jestem zaznajomiony z Laravel, ale zbudowałem 2 aplikacje na Androida, które są zaimplementowane w webservice (php). Moim wyborem jest usługa sieciowa z powodu 2 różnych aplikacji używających 2 różnych typów danych z tej samej puli danych. (Mysql dla aplikacji internetowej, xml dla aplikacji na Androida) – HddnTHA
czy Twoja aplikacja działa tylko w trybie online lub może działać w trybie offline? –
będzie działać tylko online. – Pankaj