我有一个生成JSON的API,如下所示:
)]}',
{
//JSON DATA
}
//JSON DATA
是有效的JSON,但 )]}',
up top不是 .
当我尝试通过逻辑应用程序获取此数据时,我得到:
BadRequest. Http request failed: the content was not a valid JSON.
那么,一些相关的问题:
1)我可以告诉逻辑应用程序返回无效的JSON吗?
2)如何更好地调试问题?我碰巧知道答案是无效的,但如果我不知道怎么办?我可以在某处看到原始数据吗?
3)这一切都是通过Azure门户网站完成的 . 有更好的工具吗?视觉工作室?
我还要提一下,如果我在返回XML而不是JSON的同一API上调用路由,那么Logic App工作正常 . 所以它绝对不喜欢JSON响应 .
谢谢!
2 回答
首先,请不要将三个问题作为一个问题发布 .
问题1) . 您可以做的最好的事情是让API返回一个有效的JSON对象 . 这有利于百万个原因 . 这里有几个:
它几乎是一个标准(有效的JSON或XML - 是的,老派的方式);
因此,此API的任何用户(包括您)都不需要挣扎并猜测正在发生的事情以及原因;
您的Logic App的步骤将在不增加额外复杂性的情况下正常工作;
你将使这个世界和你的业力变得更好 .
如果API方面的更改不在您的范围内,我很幸运并且HTTP操作成功(状态代码2xx),您可以尝试使用Query Action,其功能是截断第一个字符 . 它看起来像 something like this (我不知道确切的语法):
@Substring(body('myHttpGet'), 4, length(body('myHttpGet')) - 4)
其中myHttpGet
是Http Get动作的id .但是,如果可能的话,我再次强烈建议修复问题的根本原因,而不是在此之后处理垃圾响应 .
UPDATE 您可以做的另一件事是包装脏API . 例如,您可以创建一个简单的Azure功能,该功能可以调用您每月数百万个请求的API . 这里唯一的缺点是增加延迟,这可能根本不是问题 - 测试它,看它是否增加不到100ms左右......哦,不要忘记向API所有者提交一张票,他们让我们的世界变得糟糕!
问题2)在Azure Logic App Web UI中,您可以查看执行细节,肯定会出现错误 .
问题3)你要求提供一个工具推荐,根据定义,它是一个非常主观的东西,并且在StackOverflow上是偏离主题的 .
TL / DR: The other app is not producing valid JSON.
意思是,这不是你要解决的问题 . 如果所有者声称它应该是另一个应用程序必须返回有效的JSON .
如果他们不能或不会生成有效的JSON,那么您需要做的第一件事就是通知您的管理层您必须花费 a lot of extra time 来容纳他们的非标准格式 .