TIP:java
這部分相應的代碼在step-6文件夾中(https://github.com/vert-x3/vertx-guide-for-java-devs)git
咱們已經加入了vertx-web模塊,因此編寫一個HTTP/JSON API是比較簡單的,咱們將編寫以下的web api:github
GET /api/pages 提供一個所有page名字和惟一標識的頁面,web
POST /api/pages 建立一個新的wiki頁面,數據庫
PUT /api/pages/:id 更新一個wiki頁面,api
DELETE /api/pages/:id 刪除一個wiki頁面。數組
下面是使用HTTPie command-line tool來測試API的快照:微信
咱們將在HttpServerVerticle增長新的路由handlers,由於咱們要添加新的handlers到已經存在的router中,咱們能夠採用使用sub-router的方式,容許做爲已經存在router的sub-router,這樣咱們能夠更好地組織和重用handlers。下面是API router的代碼:async
1.這邊定義mountSubRouter,若是請求以/api開始將會被apiRouter處理。ide
這是處理不一樣API router handlers的代碼:
1.處理數據查詢結果映射成頁面的每一個記錄
2.JSON數組處理成在response payload中的key值。
3.JsonObject#encode()把JSON數據處理成String。
這邊的handler和其餘的handler須要處理JSON數據,validateJsonPageDocument方法用來處理檢查無效和錯誤的信息,後面的程序處理JSON記錄的數據。
handleSimpleDbReply用來完結請求
API的單元測試
在io.vertx.guides.wiki.http.ApiTest寫一個基本的測試。前面咱們須要先準備一下測試環境,HTTP server verticle須要運行database verticle,因此咱們在Vert.x測試環境中須要部署這兩個:
1.咱們使用不一樣的JDBC URL使用內存數據庫來測試。
這個測試用例簡單地測試了全部的請求狀況,增傷改查的狀況都包括了。
TIP
測試用例中使用了Future而不是內嵌回調,這樣須要async future完成或者超時。
原文連接:http://vertx.io/docs/guide-for-java-devs/
個人微信公衆號: