我不是任何类型的 RESTful API 专家,但我在 AngularJS 应用程序中有一个简单的 PUT/DELETE
函数,到目前为止它一直按预期运行。我正在尝试确定此问题可能出在我的应用程序中,还是出在运行端点的 (php) 后端中。其他 REST 服务运行正常,服务器似乎运行良好。
此函数只调用 PUT 或 DELETE,指定为 var 方法
:
if (food.favourite === true) {
method = "PUT";
console.log("method is " + method)
} else if (food.favourite === false) {
method = "DELETE";
console.log("method is " + method)
}
$http({
method: method,
url: $scope.URL
}).success(function (data, status, headers, config) {
console.log(method + " successful")
}).error(function (data, status, headers, config) {
console.log(method + " not successful")
});
我的应用程序中有一个使用不同端点的 $http GET
。在我的应用程序中的任何地方都没有指向此端点的 $http GET
- 我已经进行了广泛的搜索。
当我触发上面包含 $http 的函数时,控制台显示:
method is PUT
GET http://localhost:8888/api/ext/51/ 500 (Internal Server Error)
PUT not successful
为什么我会在不成功的 PUT 请求上收到 GET
错误?这表明我的函数有问题,还是端点有问题?
感谢您帮助理解这个问题。
更新 1
来自网络面板的信息:调用上面的 $http 函数会同时触发两个请求,一个“PUT”和一个“GET”。 “PUT”返回 301 代码,“GET”返回 500 服务器错误(我认为这是可以预料的,因为此端点未设置为响应“GET”,仅响应“PUT”和“DELETE” ').
那么:为什么我的代码会生成两个使用不同方法的同时请求?
最佳答案
对于 future 寻求类似问题答案的人:尝试为调用的每个操作返回 GET 是一种标准行为(一般是 REST 还是这个实现?不确定)。这方面的证据是,如果我检查所有其他(成功的)$http 函数的网络面板,它们也有两个可见的操作:原始 PUT/GET/DELETE 等,+ GET。
我们在这些特定请求的 GET 上看到 500 错误,因为此特定端点的配置不允许 GET。这不应对此端点上的 PUT/DELETE 操作产生任何影响 - 500 错误与 PUT/DELETE 操作不起作用的原因无关。就试图解决这个具体问题而言,这是一条转移注意力的问题。
PUT/DELETE 无法正常工作的原因是服务在服务器端中断。
关于php - REST PUT 请求返回 GET 500 错误,这是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951866/