在 Javascript 中处理 Pyramid HTTP 错误消息

Handle Pyramid HTTP error messages in Javascript

我确定一定有一个简单的解决方案,但我一直找不到。我在我的服务器中使用 Python Pyramid 并在 Javascript 中使用 AngularJS 处理 requests/responses。我正在使用 Pyramid HTTP 错误来处理某些情况,并且我能够使用 Angular http.error() 语句捕获它们。

但这就是我卡住的地方,我想对错误消息做些什么,但如果我记录响应,我只会看到 html 代码。

在金字塔中,这正在发生:

if exists:
    # continue execution
else:
    return HTTPNotFound("The object does not exist") 

并在 Angular 中:

$http.get(url)
.success(function(data) {
    // do something
})
.error(function(data){
   // do something with the error message
});

如何从 HTTP 错误中获取特定的错误消息? (顺便说一句,我使用 JSON 作为我的渲染器)

如果您不 return 渲染器的值而是 return 响应或异常,则不会考虑您的渲染 - 所以不要期望输出 json 除非您的错误处理程序支持。

您可以改为这样做:

return HTTPUnprocessableEntity(body=json.dumps(yourobj/string))

然后您可以在错误处理程序中检索 JSON 并使用 angular.fromJson() 读取它。

可能有点晚了,但这可能会让 Angular 的其他用户感兴趣: 只需调用模态即可弹出金字塔 HTML 错误:

function(error)
    {  console.log("error is: " + error);
       var modalInstance = $uibModal.open(
          {
             template: error,
             size:'lg' 
          });
    }

(不要忘记包含 $uibModal)。 对于调试目的非常有用,但不推荐用于生产。