angularjsrestbackandmbaas

Backand.com - Random error 404 during REST API


for one web app I'm using Backand.com as MBAAS .

I created a data model and linked all tables.

If I query the default REST APIs there is no problem at all, however if I try to call custom action or custom query the server randomly answer with error 404 not found....

For example I've this custom action named: getCommentsByEvent

'use strict';
function backandCallback(userInput, dbRow, parameters, userProfile) {
    // write your code here
return $http ({
  method: 'GET',
  url: CONSTS.apiUrl + '/1/query/data/getCommentsByEvent',
  params: {
    parameters: {
      event_id: {{event_id}}
    }
  },
headers: {"Authorization": userProfile.token}
});

}

From the web App I use this code to call it via REST

       service.commentsByEvent = function(p, s, r) {
            $http({
                method: 'GET',
                url: Backand.getApiUrl() + '/1/objects/action/comments/?name=getCommentsByEvent',
                params: {
                    parameters: {
                        event_id: p.eventId
                    }
                }
            }).then(s, r);
        };

The custom action is written correctly because if I try to call it directly from test page of Backand.com it works without any problem, however if I try from my web app 80% of the time it does not work, 20% it works

This is the error:

Object {data: "Action not found, or is not on demand", status: 404, config: Object, statusText: "Not Found"}

Just to know: - the action does not have security profile or role or others; - before to call this action web app call the signin API to get the token - the action does not need the auth token because is public

To call the signin API I made this service:

service.signin = function(email, password) {
        //set the app name of Backand. In your app copy this to .config section with hard coded app name
        Backand.setAppName($rootScope.appName);
        //call Backand for sign in
        return Backand.signin(email, password);
    };
    service.signout = function() {
        return Backand.signout();
    };

Any idea?

Thanks Michele


Solution

  • Fixed!

    It was a very dummy issue related with the "App name" created on Backand.com website....

    On Backand.com I created an app with all name in uppercase like "MYAPP" so when I configured the SDK on Angular I wrote

    Backand.setAppName("MYAPP);
    

    However Backand.com display the same name on the website, but during the configuration it require a LOWERCASE ONLY name! Nobody, even in customer care, knew this requirements so it was very difficult to understand how to fix... Yesterday I did a try in this way and it worked...

    Backand.setAppName("myapp");
    

    To sum up, if you have an error 404 and the URL is correct, there is no authentication issue check if the APP NAME is ONLY LOWERCASE.