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

TIP:html

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

如今的应用都不是故步自封的孤岛,都须要集成其余的应用和服务,整合很是通用的手段就是暴露HTTP服务。在这个章节中咱们咱们将演示用Vert.x的HTTP客户端APIs整合第三方服务。git

场景:GitHub Gistgithub

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

不少的服务要求权限认证,建立一个Gist能够是匿名的。咱们能够利用这一点特性来为咱们的wiki页面制做Gist。json

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

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

一个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/

个人微信公众号:

相关文章
相关标签/搜索