我正在从运行良好的 jquery $.ajax 切换到使用 AngularJS $http.put 来访问 restful API。
我可以进行 API 调用,但未发送 PUT 数据 - 所以我的 API 看到一个带有空数据对象的 PUT 请求,它应该包含一个 JSON 字符串 ->data.values = 'a json structure'
$http.put(
$rootScope.api_url,
{
values: jsonifiedValues
},
{
headers: {
apihash: sha256hash
}
}).success(function(data,status,headers,config){
// handle success
}).error(function(data,status,headers,config) {
// handle failure
});
我以前没有使用过 AngularJS 的 $http,但是当我在我的 PHP api 中转储数据时,它只是空的。这就是我从 PHP 中的请求中提取它的方式:
parse_str(file_get_contents('php://input'), $put_vars);
$arr_req_data = $put_vars['values'];
在我的 API 中,如果从请求发送的 apihash 与基于 PUT 值构建的 sha256 哈希不匹配,则会失败。
这在 JQuery 中工作,现在我已经切换到 $http 失败了。我不确定为什么 PUT 数据似乎是空的。