非标准JSON和Azure Logic应用

乌鸦山

我有一个生成JSON的API,如下所示:

)]}',

{
    //JSON DATA
}

//JSON DATA是有效的JSON,但)]}',向上顶是没有的。

当我尝试通过Logic App获取此数据时,我得到:

BadRequest. Http request failed: the content was not a valid JSON.

因此,一些相关问题:

1)无论如何,我可以告诉逻辑应用返回无效的JSON吗?

2)如何更好地调试问题?我碰巧知道响应无效,但是如果没有,该怎么办?我可以在某处看到原始数据吗?

3)全部通过Azure Web门户完成。有更好的工具吗?视觉工作室?

我还应该提到,如果我在返回XML而不是JSON的同一API上调用路由,则Logic App可以正常工作。因此,它绝对不特别喜欢JSON响应。

谢谢!

伊戈尔(Igor Soloydenko)

首先,请不要将三个问题作为单个问题发布


问题1)。最好的办法是使API返回有效的JSON对象。由于数百万个原因,这很好。这里是一些:

  • 这几乎是一个标准(有效的JSON或XML –是的,老式的方法);
  • 因此,此API的用户(包括您)都无需费力并猜测发生了什么以及为什么;
  • 您的逻辑应用程序的步骤将不增加额外复杂性的情况下可以正常工作
  • 您将改善这个世界和您的业障。

如果API方面的更改不在您的范围之内,我认为您无能为力。如果幸运的话,HTTP操作成功(状态代码2xx),则可以尝试将查询操作与截断前几个字符的函数一起使用它看起来像这样(我不知道确切的语法):Http Get操作的ID@Substring(body('myHttpGet'), 4, length(body('myHttpGet')) - 4)在哪里myHttpGet

但是,如果可能的话,我再次强烈建议修复该API,这是问题的根本原因,而不是在此之后处理垃圾响应。

更新您可以做的另一件事是包装脏API。例如,您可以创建一个简单的Azure函数,该函数调用您不直接控制的API,并根据您的消耗需求清理响应。可以从Logic App轻松调用此Azure Function函数。它几乎不花钱(除非我们每个月要谈论数百万个请求)。唯一的缺点是延迟增加,这可能根本不是问题,请对其进行测试,看看它是否增加了不到100毫秒左右的时间。他们使我们的世界变得糟糕!


问题2)在Azure Logic App Web UI中,您可以查看执行详细信息,错误肯定会出现。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


问题3)您要的是一种工具推荐,从定义上讲,这是很主观的事情,并且在StackOverflow上不合时宜。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章