Reputation: 1640
I want to make a Get request to my Backend, but I want to verify some user credentials before sending the response object.
Here is my code:
$scope.getEverything = function (){
$http.get('http://localhost:1234/things').success(function(data){
$scope.things = data;
});
};
I've tried the same code with the following syntax:
$http.method('path).then
$http.method(config)
And I just could not figure out how to pass in some data. Trying to use params:data as the config object with print out:
GET http://localhost:1234/[object%20Object] 404 (Not Found)
On the console.
The AngularJS Docs don't say a word about sending data with GET requests. I've also tried some answers of Stack, but most of then are outdated and just won't work.
Can I send data with GET request or this is just one design error of my application?
Upvotes: 10
Views: 67822
Reputation: 1147
If you want to pass some data when using the GET method you can pass a params
option on the get method of the $http
service. This will be urlencoded parameters.
$http.get(url, {
params: {
query: 'hello world'
}
}
or
$http({
url: url,
method:'GET',
params: {
query:'Hello World'
}
})
But, the http standards define the POST method to send data to the server. The GET is just to obtain data from it. In Angular the POST method looks like:
$http({
url: url,
method:'POST',
data: {
query: 'Hello World'
}
})
Check the official docs for GET and POST
Upvotes: 2
Reputation: 8588
You're most likely going to need to use a POST method instead of a GET method.
But to do it with a GET method:
From AngularJS passing data to $http.get request:
A HTTP GET request can't contain data to be posted to the server. However you can add a query string to the request.
angular.http provides an option for it params.
$http({
url: user.details_path,
method: "GET",
params: {user_id: user.id}
});
And using AngularJS to POST instead:
$http.post('/someUrl', {msg:'hello word!'}).
then(function(response) {
// this callback will be called asynchronously
// when the response is available
}, function(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
Upvotes: 9
Reputation: 1
As @charlietfl mentioned, according to the docs you can do this to implement download loaded/total progress:
$http.get(url, {
eventHandlers: {
'progress': function(evt) {
$window.console.log(evt.loaded + '/' + evt.total);
}
}
}).then(function(response) { ...
Upvotes: 0
Reputation: 171679
For $http.get
requests use the params
property of the config object
$http.get(url, {params:{ foo:'bar'}}).then(func....
See the Arguments table in Usage section of $http docs
Upvotes: 3
Reputation: 1034
Try
var req = {
method: 'GET',
url: 'http://localhost:1234/things',
data: { test: 'test' }
}
$http(req).then(function(){...}, function(){...});
Upvotes: 1