Sie sollten eine einfache API entwickeln Sie Ihre APP-Daten von einem Android-Client für den Zugriff auf:
Routen
allererst Sie bestimmte Routen für die API erstellen müssen, durch die Sie werden Ihre Daten im JSON-Format
Authentifizierung
dienen
Die Routen der API sollten die Authentifizierung in Bezug auf das, was Sie gerade tun, anders handhaben: Sie können den klassischen sitzungsbasierten Ansatz nicht verwenden. Stattdessen müssen Sie einen grundlegenden oder Token-basierten Ansatz verwenden. Sie haben verschiedene Alternativen, dies sind einige der am häufigsten verwendeten (von der einfachsten, auf die komplizierteste)
Laravel HTTP Basic Authentication
Laravel Json Web Token Authentication
Laravel OAUTH2
Daten Acess
Sobald Sie Ihre Routen und Authentifizierung eingerichtet haben, müssen Sie Ihre Daten über die API-Routen bereitstellen. Da Sie dieselben Daten in Ihren APP-Routen und API-Routen verwenden, können Sie die Logik des Datenaufbaus und -abrufs in Services umschließen und die Dienste verwenden, um die Daten sowohl in Ihren APP-Routen als auch in API-Routen abzurufen.
Mit verschiedenen Controllern für API und APP Routen, Sie haben:
//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);
}
Auf diese Weise können:
Encapsulate Daten Gebäude und retrieveng in Dienstleistungen, so dass Sie don‘ t müssen den Code zum Datenabruf zwischen APP- und API-Routen duplizieren.
Andere haben c Kontrolleure, um auf APP- oder API-Routen zuzugreifen; so können Sie die Daten erhalten, verwandeln Sie es wie Sie es Kunden, die Aussicht oder api
Über den Service-Klasse
In Bezug auf die Serviceklasse benötigen und dienen die ich erwähnt habe, könnte es sein, Einfach eine oder mehrere Wrapper-Klassen, die Sie sowohl in API- als auch in APP-Controllern verwenden, um die Daten zu erstellen und abzurufen, ohne Code zu aktualisieren. Die Struktur solcher Klassen hängt davon ab, wie Ihre App funktioniert.
Für das Beispiel lassen vermuten Sie es in einer Variablen einige Daten für jedes Projekt des Benutzers speichern berechnen müssen und es dann an die viev senden:
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));
}
Jetzt möchte, wenn die gleiche Sache in der API machen Controller, müssten Sie diesen Code wiederholen, um die Projekte zu erhalten und die Daten zu erstellen. Um dies zu vermeiden, könnten Sie ‚wickeln‘ den Datenzugriff in einer Serviceklasse, und verwenden die gleiche Klasse in boh Controller:
Service-Klasse
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;
}
}
und verwenden die gleiche Klasse sowohl in der API und APP-Controller:
//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);
}
Ich bin nicht vertraut von Laravel, aber ich baute 2 Android-App, die mit Webservice (php) seeding sind. Meine Wahl ist Webservice wegen 2 verschiedenen App mit 2 verschiedenen Datentypen aus dem gleichen Datenpool. (Mysql für Web-App, XML für Android-App) – HddnTHA
funktioniert Ihre App nur online oder es funktioniert auch offline? –
es funktioniert nur online. – Pankaj