आप एक Android ग्राहक से अपने एपीपी डेटा का उपयोग करने के लिए एक सरल एपीआई का विकास करना चाहिए:
मार्गों
सब आप एपीआई के लिए कुछ विशेष रूट बनाने के लिए की जरूरत है सबसे पहले, जिसके माध्यम से आप JSON प्रारूप में अपने डेटा को प्रस्तुत करेंगे, जिन्हें
प्रमाणीकरण
एपीआई के मार्गों को अब आप जो कर रहे हैं उसके संबंध में प्रमाणीकरण को एक अलग तरीके से संभालना चाहिए: आप क्लासिक सत्र-आधारित दृष्टिकोण का उपयोग नहीं कर सकते हैं। इसके बजाय आपको मूल या टोकन-आधारित दृष्टिकोण का उपयोग करना होगा। आप अलग अलग विकल्प है, इन सबसे अधिक इस्तेमाल किया (सरल से, सबसे जटिल करने के लिए)
Laravel HTTP Basic Authentication
Laravel Json Web Token Authentication
Laravel OAUTH2
डेटा तक पहुंचने
में से कुछ हैं एक बार जब आप अपने मार्ग और प्रमाणीकरण को सेट कर लेंगे, तो आपको एपीआई मार्गों के माध्यम से अपना डेटा देना होगा। चूंकि आप अपने एपीपी मार्गों और एपीआई मार्गों में एक ही डेटा का उपयोग करते हैं, इसलिए आप डेटा बिल्डिंग के तर्क को लपेट सकते हैं और सेवाओं में पुनः प्राप्त कर सकते हैं और अपने एपीपी मार्गों और एपीआई मार्गों में डेटा प्राप्त करने के लिए सेवाओं का उपयोग कर सकते हैं।
एपीआई और एपीपी मार्गों के लिए विभिन्न नियंत्रकों का उपयोग करना, तुम हो:
//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);
}
इस तरह से आप कर सकते हैं:
Encapsulate डेटा इमारत और सेवाओं में retrieveng, ताकि आप डॉन ' एपी और एपीआई मार्गों के बीच डेटा पुनर्प्राप्त करने के लिए कोड को डुप्लिकेट करने की आवश्यकता नहीं है
अलग-अलग सी है एपीपी या एपीआई मार्गों तक पहुंचने के लिए ऑनट्रॉलर; इसलिए यदि आप डेटा प्राप्त कर सकते हैं बदलने के रूप में आप की जरूरत है और या तो दृश्य या API क्लाइंट को
सेवा वर्ग
सेवा वर्ग मैं उल्लेख किया है के बारे में के बारे में करने के लिए यह काम करते हैं, यह हो सकता है बस एक या एकाधिक रैपर कक्षाएं जिन्हें आप एपीआई और एपीपी नियंत्रकों दोनों में कोड बनाने के बिना डेटा बनाने और प्राप्त करने के लिए उपयोग करते हैं। ऐसी कक्षाओं की संरचना इस बात पर निर्भर करती है कि आपका ऐप कैसे काम करता है।
उदाहरण के लिए मान लीजिए कि आप प्रत्येक उपयोगकर्ता की परियोजना के लिए कुछ डेटा की गणना करने की जरूरत है लगता है, एक चर में संग्रहीत और फिर 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));
}
अब अगर एपीआई में एक ही बात करना चाहता हूँ नियंत्रक, परियोजनाओं को प्राप्त करने और डेटा बनाने के लिए आपको इस कोड को दोबारा जवाब देना होगा। इससे बचने के लिए, आप एक सेवा वर्ग में डेटा का उपयोग 'लपेट' सकता है, और वाह नियंत्रकों में एक ही कक्षा का उपयोग करें:
सेवा वर्ग
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;
}
}
और दोनों एपीआई में एक ही कक्षा का उपयोग करें और एपीपी नियंत्रक:
//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);
}
मैं लार्वेल से परिचित नहीं हूं लेकिन मैंने 2 एंड्रॉइड ऐप बनाया है जो webservice (php) के साथ बीजिंग कर रहे हैं। मेरी पसंद एक ही डेटा पूल से 2 अलग डेटाटाइप का उपयोग करके 2 अलग-अलग ऐप की वजह से webservice है। (वेब ऐप के लिए MySQL, एंड्रॉइड ऐप के लिए एक्सएमएल) – HddnTHA
क्या आपका ऐप केवल ऑनलाइन है या यह ऑफ़लाइन काम भी कर सकता है? –
यह केवल ऑनलाइन काम करेगा। – Pankaj