Lately, I have been toying around with angularjs, and I have to confess, its quite a powerful framework. My side of the story.

Anyway, after reading much online here is my generic factory for consuming APIs(PHP SLIM 3).

app.factory("Data",['$resource','toaster',
function($resource,toaster)
{
var serviceBase='http://localhost/bookroom/school.php';//url
return function(link) //receive part of url with parameters
{
return $resource(serviceBase+link,{},{
query:{method:'GET',isArray:true},//this is for get
update:{method:'PUT'},
delete:{method:'DELETE'},
create:{method:'POST'},
two_query:{
url:serviceBase+link,
method:'GET',isArray:false,
params:{id:'@id',
users_id:'@users_id'
}
}

}

);
}
}]);

This is how it is used.
In your controllers

app.controller('usersCtrl',function($scope,$rootScope,$routeParams,$location,$http,Data)
{
    $scope.login={};
    $scope.msgbox={};
    $scope.doLogin=function(users)
    {
      Data('/login').create({users:users},function(response){
           if(response.message=="error")
            {
              //Do something
            }else
            {
               $location.path('dashboard');
            }
         }).$promise;
   }
    $scope.doUserRegister=function(user)
    {
        var user=Data('/input').create({data:user,id:1},function(response){
            $scope.users=response;
            console.log($scope.users);
         }).$promise;
    }});
app.controller('userdisplayCtrl',function($scope,$rootScope,$routeParams,$location,$http,Data)
{

    
         $scope.users={};
        Data('/show/:id').query({id: 1},function(response)
         {
            $scope.users=response;
            console.log($scope.users);
         }).$promise;
}});

   
//This is while sending twoparameters

 Data('/show_2/:id/:users_id').two_query({id: 1,users_id:$routeParams.users_id},function(response){
            $scope.users=response;
            console.log(response.email);
         }).$promise;

});

I have not yet used PUT AND DELETE yet. Am quite uncomfortable with them

The rest api is like this, at the root of your site folder:

$app->post('/input', function ($req,$res, $args = []) use($val,$mesg,$help,$get_table)
{
$id = $req->getParsedBody()['id']; //checks both _GET and _POST [NOT PSR-7 Compliant]
$data = $req->getParsedBody()['data'];
$table=get_table($id);
//do something
});

$app->get('/show/{id}',function($req,$res,$args)use($val,$mesg,$get_table)
{
$id=$req->getAttribute('id');

$table=get_table($id);
//Do something
});
$app->get('/show_2/{id}/{users_id}',function($req,$res,$args)use($val,$mesg,$get_table)
{
$id=$req->getAttribute('id');
$users_id=$req->getAttribute('users_id');
$table=get_table($id);

//do something

});

The get_table() is a little function I built to allow me to select tables in my simple database

function get_table($id="")
{
if($id==1)
return "admins";
elseif($id==2)
return "students";
elseif($id==3)
return "hostels";
elseif($id==4)
return "lecturers";
}
$get_table=get_table();

If you do not understand, Please comment below and I will try help explain. Great week

Your support is our everlasting motivation,
that cup of coffee is what keeps us going!


As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.

LEAVE A REPLY

Please enter your comment!
Please enter your name here