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
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.