有没有一个类型安全的Scala(或Java)库可以消费JSON Web API?

6

我希望能够找到一个简单的Java(或Scala)REST客户端库,使我可以轻松地在JSON REST API上执行GET / PUT / POST / DELETE等操作,并以类型安全方式反序列化JSON响应为Java对象,例如:

RestClient client = new RestClient("http://api.mycompany.com").withAuth(Auth.Basic, username, password);
// This basically deserializes the JSON response into a POJO    
MyDocument[] result = client.get("/document?limit=10", MyDocument[].class);
MyFriend friend = client.post("/friend/Joe", body, MyFriend.class); 

基本上,我希望get()的通用签名如下所示,例如:public <T> T get(String path, Class<T> responseClass),它将执行GET请求并将JSON响应反序列化为类型为responseClass的POJO。
我找到了一个名为sitebricks的库,它与我的需求非常接近,但其范围严重受限,例如它不允许我执行更不常见的HTTP动词,如PUT/PATCH/DELETE,也没有设置请求头或甚至请求正文的方法。
我发现的另一个库则存在相反的问题 - 它无法执行基本身份验证,并且不能自动将JSON反序列化为对象。

如果可能的话,请避免在标题中使用“好”和“最佳”。此外,Scala 是目标,而不是备选项。 - user166390
你的目标是进行http请求吗?你看过dispatch或reboot了吗?https://github.com/dispatch/dispatch。如果你的目标是处理和响应http请求,那么unfiltered可能值得一看。https://github.com/unfiltered/unfiltered - jwinder
调度或重新启动(这是使用异步HTTP客户端编写的新版本调度)将很好地处理HTTP动词。声称可以处理HTTP请求而不处理不同HTTP动词的任何库都不应被视为处理HTTP请求的库。我认为这里的逻辑是HTTP动词是HTTP请求的基础,因此任何库都应该支持它们。 - jwinder
我的目标是在一个JSON REST API上建立一个轻量级的Java/Scala客户端库。为了实现这一目标,我不仅需要发出HTTP请求,还需要将JSON响应转换成Java/Scala模型对象。 - pathikrit
1个回答

1

你有检查过this吗?你可以使用Salat来进行序列化,而不是使用SJSON。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接