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/
个人微信公众号: