我想创建一个库来执行身份验证(在请求中发送一些身份验证参数)并从API返回json
响应。 JSON通常代表一组字典,如下所示:
[
{"a": 1, "b": 2},
{"a": 3, "b": 1}
]
我在Python
中做了同样的事情,并且很简单,我只返回dict
内置的Python
。
我想知道Java
中最好的方法是什么?以下是我考虑的一些方法:
java.net.HttpURLConnection
,通过这种方法,我将返回connection.getInputStream()
,这将由用户处理。这种方法的缺点是用户需要完成大部分工作(读取流并将其转换为类似json的对象或其他)。好的部分是用户可以灵活地以他们喜欢的任何方式处理它,使用第三方json
库或其他东西从类创建自定义对象。通过这种方法,我不强迫它们使用某些库,因为整个代码将使用Java内置函数。org.json
或GSON
,并返回该类型的对象。这里的缺点是我会强迫用户使用第三方库。困扰我的是Python开发人员经常使用dict,而在Java中,开发人员通常更喜欢使用特定用户定义类的对象。所以,我不能总结出最合适的方式。
答案 0 :(得分:1)
HTTP API的任何端点都有一个已定义的响应结构(或至少它应该)。库实现的方法应返回表示响应有效负载的POJO。最终用户不需要知道API以JSON格式化有效负载。如果API有一天决定使用XML,则该更改应对您的库用户透明。
编辑:简单地返回字典,或者地图类型是不好的做法。这样做会强制库的用户采用响应中每个属性的键字符串和值类型。 POJO提供了响应属性名称及其值类型的清晰定义。