我很難找到關于哪個是正確的回傳型別的檔案。
例如,如果我有一個查找并回傳一個字串的REST端點,該端點的回傳型別應該是Future<String>還是String?此外,這將對事件回圈產生什么影響(即回傳String而不是Future<String>是否會導致更多的阻塞)?
謝謝!
uj5u.com熱心網友回復:
如果你看一下https://vertx.io/get-started的快速入門的第(2)節,你會看到我在下面粘貼的一大塊代碼(我加了一些編號的注釋):
//mount the handler for all incoming requests at every path and HTTP method
路由器
.route() // (1).
.handler(context -> { // (2).
//獲取請求的地址 //獲取請求的地址
String address = context.request().connection().remoteAddress() .toString()。
//>獲取查詢引數 "name"。
MultiMap queryParams = context.queryParams()。
String name = queryParams. contains("name") ? queryParams.get("name") : "unknown"。
//寫一個json回應。
context.json( // (3)/span>
new JsonObject( )
.put("name", name)
.put("address", address)
.put("message", "Hello" name " connected from" address)
);
});
這要做的是:
- 注冊一個
Handler(基本上是一個回呼),它將為路由器收到的每個請求被呼叫。 - 處理程式將被呼叫一個
RoutingContext,它包含對代表當前請求的HttpServerRequest物件的參考,以及代表回應的HttpServerResponse物件。后者允許你控制被送回客戶端的回應(即頭檔案、正文等)。 context.json()是一個方便的方法,用于撰寫JSON格式的回應有效載荷--正文將被正確格式化,內容型別頭將被設定,等等。
從根本上說,.json()的作用是:
final JsonObject myJson = ...;
final Buffer myJsonBuffer = Json.encodeToBuffer(myJson)。
背景關系.回應()
.putHeader(HttpHeaders.CONTENT_TYPE, "application/json")
.write(myJsonBuffer)。
最后三行是如何將回應實際發送回客戶端的。
有關更詳細的解釋,請查看 Vert.x Web 檔案中有關回應的內容此處。
uj5u.com熱心網友回復:
我猜這就是你要找的檔案。你可以向eventBus回傳字串。盡管大多數情況下使用的是Json。開箱即用的Vert.x允許任何原始的/簡單的型別、字串或 緩沖區作為訊息來發送。然而,在Vert.x中,發送訊息是一種慣例和常見的做法。 然而,在Vert.x中,將訊息作為JSON發送是一種慣例和常見做法
。
new JsonObject()。 put("key", "stringValue") 。
回傳字串比回傳Future更好。Future將需要特殊的Codec.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327320.html
標籤:
