我正在尝试从我的Ionic Project向我的laravel Dingo API发出POST请求。当我在POSTMAN中发出POST请求时,它成功创建了一条新记录,但是当我在Angularjs中执行它时,它会返回GET请求的响应。
这是POSTMAN为Jquery代码建议的响应:
storeContact: function(token, data) {
var deferred = $q.defer();
var promise = deferred.promise;
var settings = {
method: "POST",
url: "/api/api/contacts/",
headers: {
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' +token
},
data: data
};
console.log(settings);
$http(settings).then(function mySuccess(response) {
deferred.resolve(response.data);
}, function myError(response){
deferred.reject(response.statusText);
});
promise.success = function(fn) {
promise.then(fn);
return promise;
};
promise.error = function(fn) {
promise.then(null, fn);
return promise;
};
return promise;
},
我的angularjs请求是
data: {'fname':'testname'}
angularJS代码返回成功响应,并从GET请求的同一URL返回数据。我相信我的所有Laraval代码都是正确的,因为POSTMAN可以成功运行调用并创建新记录。我的angularJS代码一定有问题。
注意我也试过通过这样形成的角度js发送数据:
pFast
答案 0 :(得分:0)
你的角度代码是不是在命中一个不同的端点?
/api/api/contacts/
/api/contacts
这可能是问题吗?
答案 1 :(得分:0)
所以我不知道如何修复$ http,但我使用了$ resource而现在正在使用:
.service('ContactsService1', function($resource) {
return {
contacts: function(token) {
return $resource('/api/contacts/:contact',
{contact: "@contact"},
{ get: {
method: 'GET',
headers: {
'Authorization' : 'Bearer ' + token
}
},
delete: {
method: 'DELETE',
headers: {
'Authorization' : 'Bearer ' + token
}
},
save: {
method: 'POST',
headers: {
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization' : 'Bearer ' + token
},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
}
},
}
)
}}
});
对于我的控制器,这是我的代码:
ContactsService1.contacts($scope.token).save(null, $scope.contact, function(data){
$scope.result = data;
console.log($scope.result);
$state.go('menu.contacts', {}, {reload: true});
}, function(data){
if(data =='Unauthorized'){
window.localStorage.removeItem("token");
$state.go('login');
}else{
//console.log(data);
}
});