Tejaswi katha
Tejaswi katha

Reputation: 39

400 Bad Request for $http post method

While using the following code, I get

400 Bad request rest_missing_callback_params

$scope.signUp = function () {
    var data = {
    	email: $scope.email,
    	password: $scope.password,
    	first_name: $scope.fName,
    	last_name: $scope.lName,
    	username: $scope.uName,
    	billing: {
    		first_name: $scope.fName,
    		last_name: $scope.lName,
    		company: $scope.cName,
    		address_1: $scope.address1,
    		address_2: $scope.address2,
    		city: $scope.city,
    		state: $scope.state,
    		postcode: $scope.pcode,
    		country: $scope.country,
    		email: $scope.email,
    		phone: $scope.mobile,
    	},
    	shipping: {
    		first_name: $scope.fName1,
    		last_name: $scope.lName1,
    		company: $scope.cName1,
    		address_1: $scope.address11,
    		address_2: $scope.address12,
    		city: $scope.city1,
    		state: $scope.state1,
    		postcode: $scope.pcode1,
    		country: $scope.country1,
    	}
    }

    console.log(data)
    $http.post("https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers", {
    		headers: {
    			'Content-Type': 'application/json',
    			'Authorization': 'Basic ' + window.btoa("username:password")
    		},
    		data: data
    	})
    	.then(function (response) {
    		console.log(response)
    	}, function (response) {
    		console.log(response);
    	});
}

But when I use the following code, it posts the data to the server.

var au = window.btoa("username:password"),
    req = {
    	method: 'POST',
    	url: 'https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers',
    	headers: {
    		'Content-Type': 'application/json',
    		'Authorization': 'Basic ' + au
    	},
    	data: data
    }

$http(req).then(function (response) {
	console.log(response)
}, function (response) {
	console.log(response);
});

What is the difference between these two? Why does it happen like so?

Upvotes: 0

Views: 2738

Answers (1)

Matthew Shwery
Matthew Shwery

Reputation: 111

For the top example to work you need to change this:

$http.post("https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers", {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + window.btoa("username:password")
  },
  data: data
})

To this:

$http.post("https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers", data, {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + window.btoa("username:password")
  }
})

According the the Angular $http docs (https://docs.angularjs.org/api/ng/service/$http#post) $http.post() has a different method signature (post(url, data, [config]);) than $http() ($http(config)).

Upvotes: 1

Related Questions