我目前正在编写一个查询第三方API的应用程序。以前我这样做的时候,我已经做了正确的方式,并创建了一个结构体,并将响应字符串解组到结构体中,并以这种方式访问所有的数据。然而,只有在数据结构一致的情况下,这种方式才有效。
我在尝试查询结构不一致的API时遇到了问题。
{'status': 'ok', 'due_date': '2023-01-01', 'library': 'AIEHA1'}
但如果失败,根据错误类型,我会得到不同的结构;一些例子:
第一次
显然,我可以把它传递到一个通用的Map,但我想知道什么是正确的做法是这样的东西?是的,API是可怕的,是的,可悲的是,我不得不使用它。
1条答案
按热度按时间ncecgwcz1#
处理此问题的一种方法是使用包含所有可能字段的结构:
解组API响应,然后处理API结果结构以确定实际的返回类型。
另一种方法是解组到预期的结构体中,然后根据状态再次解组到错误结构体中:
当响应不是错误时,这样做的好处是只对目标结构解组一次。
通常当有错误时,API返回HTTP状态而不是2xx代码。如果是这种情况,您可以查看响应代码,并根据它进行解组。