返回介绍

16.4 编写 REST 客户端

发布于 2024-08-17 00:45:49 字数 963 浏览 0 评论 0 收藏 0

作为客户端,编写与REST资源交互的代码可能会比较乏味,并且所编写的代码都是样板式的。例如,假设我们需要借助Facebook的Graph API,编写方法来获取某人的Facebook基本信息。不过,获取基本信息的代码会有点复杂,如下面的程序清单所示。

程序清单16.6 使用Apache HTTP Client获取Facebook中的个人基本信息

你可以看到,在使用REST资源的时候涉及很多代码。这里我甚至还偷懒使用了Jakarta Commons HTTP Client发起请求并使用Jackson JSON processor解析响应。

仔细看一下fetchFacebookProfile()方法,你可能会发现方法中只有少量代码与获取Facebook个人信息直接相关。如果你要编写另一个方法来使用其他的REST资源,很可能会有很多代码是与fetchFacebookProfile()相同的。

另外,还有一些地方可能会抛出的IOException异常。因为IOException是检查型异常,所以要么捕获它,要么抛出它。在本示例中,我选择捕获它并在它的位置重新抛出一个非检查型异常RuntimeException。

鉴于在资源使用上有如此之多的样板代码,你可能会觉得最好的方式是封装通用代码并参数化可变的部分。这正是Spring的RestTemplate所做的事情。就像JdbcTemplate处理了JDBC数据访问时的丑陋部分,RestTemplate让我们在使用RESTful资源时免于编写那些乏味的代码。

稍后,我们将会看到如何借助RestTemplate重写fetchFacebookProfile()方法,这会戏剧性的简化该方法并消除掉样板式代码。但首先,让我们整体了解一下RestTemplate提供的所有REST操作。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文