在pentaho中处理错误和休息响应的最佳方法是什么

时间:2019-07-26 12:16:41

标签: rest etl pentaho kettle data-migration

我是ETL的初学者,我试图从现有数据(例如:类似100k数据)中停止客户端API localhost:8080/student(POST)

在请求错误的情况下,API localhost:8080/student(POST)返回这样的响应

{
    "errors": [
        {
            "code": "student id.not.found",
            "message": "student with branch id does not exist"
        }
    ],
    "statusCode": "BAD_REQUEST"
}


OR  this in case of authorization fails

{
    "error": "invalid_token",
    "error_description": "Cannot convert access token to JSON"
}

处理此问题的最佳方法是什么?

我想将失败的请求保存到某处,然后重试。

如果出现直接错误(例如500等),我该如何处理?

我当前的方法是将JSON响应存储在某个变量中,并搜索响应中是否包含带有错误或错误代码的名称,而我将其视为失败 还是应该只检查返回的HTTP响应状态代码

电流像这样

休息响应是这样的

这就是我试图获取错误字段的方法,但是每次都会变为空

2 个答案:

答案 0 :(得分:0)

我不确定这是否是最佳方法,但能够解决问题。我没有使用pentaho函数,而是使用了对我有用的javascript。

我已在response_status示例值400中设置了响应的http状态 并且result具有完整的响应api返回示例{ "error": "invalid_token", "error_description": "Cannot convert access token to JSON" }

我使用过的脚本样本

var sucess_status;
var error_description;
var errors_detail;
var http_status = JSON.stringify(response_status);
if( http_status.match('/^2/g')){
sucess_status ="true";
}else{
sucess_status ="false";
var obj = JSON.parse(response);
errors_detail= JSON.stringify(obj);              // case of 401

}

进一步阅读复杂的json可以阅读任何可以增强脚本的复杂的json 请参阅Need to parse complex Json

答案 1 :(得分:0)

您可以使用步骤过滤行开关/案例来检查响应或状态代码是否等于或包含预期的错误,从而可以重定向您的流程,如下例所示:

enter image description here