【问题标题】:what is the best way to handle error and rest response in pentaho在 pentaho 中处理错误和休息响应的最佳方法是什么
【发布时间】:2019-07-26 12:16:41
【问题描述】:

我是 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 响应状态代码

电流是这样的

休息反应是这样的

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

【问题讨论】:

    标签: rest etl pentaho kettle data-migration


    【解决方案1】:

    我不确定这是否是最好的方法,但能够解决问题。我没有寻找 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

    【讨论】:

      【解决方案2】:

      您可以使用步骤 filter rowsswitch / case 来检查响应或状态代码是否等于或包含您期望的错误,您可以如下例所示重定向您的流程:

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 1970-01-01
        • 2017-11-13
        • 2016-11-24
        • 1970-01-01
        • 2015-06-12
        • 2017-12-26
        • 1970-01-01
        • 2020-08-07
        相关资源
        最近更新 更多