Vert.x 集成第三方web服务 译<七>


声明:本文转载自https://my.oschina.net/u/2277632/blog/1582385,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

TIP:

这部分相应的代码在step-5文件夹中(https://github.com/vert-x3/vertx-guide-for-java-devs)

现在的应用都不是故步自封的孤岛,都需要集成其他的应用和服务,整合非常通用的手段就是暴露HTTP服务。在这个章节中我们我们将演示用Vert.x的HTTP客户端APIs整合第三方服务。

场景:GitHub Gist

GitHub Gist 服务用来看代码片段是很流行的,其他服务也可以使用它。一个例子是媒体发布平台,链接要嵌入允许代码片段。GitHub 服务提供了详细的API的用于获取、创建、更新和删除Gist。API使用HTTPS形式,以https://api.github.com/开头和JSON格式数据。

很多的服务要求权限认证,创建一个Gist可以是匿名的。我们可以利用这一点特性来为我们的wiki页面制作Gist。

一个新的按钮将会被添加到Wiki的首页:

点击backup按钮将会出发创建一个Gist:

一个Gist包含每一个页面的文件们还有页面上的raw Markdown文本内容:

更新数据服务

在我们深入到Web客户端API和执行HTTP请求到另一个服务前,我们需要修改数据服务的API来获取wiki页面的数据,这部分查询的代码添加在db-queries.properties中:

all-pages-data=select * from Pages

在WikiDatabaseService接口中添加一个新的方法:

@Fluent WikiDatabaseService fetchAllPagesData(Handler<AsyncResult<List<JsonObject>>> resultHandler);

在WikiDatabaseServiceImpl中的实现如下所示:

WEB客户端代码API

在vertx 核心库中提供了createHttpClient方法,io.vertx.core.http.HttpClient的实例提供了简陋的处理各种HTTP请求的,基于细颗粒的协议与事件流上。

web client API提供一个简单的门面,特别用于简化payload数据的处理,使用这个API需要加入一个依赖:

下面的单元测试是一个简单的使用例子,这个测试启动一个HTTP服务,然后使用一个GET请求,验证请求是否成功到服务器。

创建Gists

开始我们需要一个web client来调用Gist的API:

webClient = WebClient.create(vertx, new WebClientOptions()   .setSsl(true)   .setUserAgent("vert-x3"));

TIP:因为使用了HTTPS,所以需要配置web client支持SSL

TIP:Github api要求一个User-Agent请求头,和需要一个GIthub账号或者企业认证,我们将用vert-x3重写默认的user agent,但你也可以挑选你自己的合适值代替。

我们将会修改HttpServerVerticle的web路由配置,添加一个新的路由用于触发备份:

router.get("/backup").handler(this::backupHandler);

处理的handler代码如下:

 

    1.GitHub API 文档要求的 Gist创建请求需要是JSON格式。

    2.payload中的files下的每一个记录是一个文件,key是标题,值是内容。

    3.web clien需要一个443(HHTPS)端口的POST请求,路径是/gists.

    4.在请求中添加Accept :application/vnd.github.v3+json,否则请求会失败,也需要下一行规定请求事Json数据。

  5.BodyCodec用于将返回的response直接转换成JsonObject实例,也可以使用BodyCodec#json(Class<T>)和JSON格式直接映射为JAVA对象中的T(Jackson data mapping )。

    6.sendJsonObject用于触发带有JSON payload的HTTP请求。

    7.请求成功我么可以遍历JSON数据,获取新创建的Gist的地址(html_url key)

 

 

原文链接:http://vertx.io/docs/guide-for-java-devs/

我的微信公众号:

本文发表于2017年11月30日 22:33
(c)注:本文转载自https://my.oschina.net/u/2277632/blog/1582385,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2360 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1