Üç paralel HTTP çağrısı yaptığım bir eylem var (diğer hizmetlere), sonra yanıtların içeriğini bir belgede birleştiririm ve sonunda onu istemciye geri gönderirim. Bu kodun bir çalışma örneğidir:Çerçeveyi paralel oynatır WSClient çağrıları hata yönetimi
servislerinden biri mevcut değilse@Inject
WSClient wsc;
public CompletionStage<Result> getUrlData() throws Exception {
List<CompletionStage<WSResponse>> stages = new ArrayList<>();
stages.add(wsc.url("http://jsonplaceholder.typicode.com/posts/1").get());
stages.add(wsc.url("http://jsonplaceholder.typicode.com/posts/2").get());
stages.add(wsc.url("http://jsonplaceholder.typicode.com/posts/3").get());
return Futures
.sequence(stages)
.thenApply(responses -> {
StringBuilder builder = new StringBuilder("[");
responses.stream().forEach(response -> builder.append(response.getBody()).append(","));
builder.deleteCharAt(builder.length()-1).append("]");
return ok(builder.toString());
})
.exceptionally(ex -> ok("{\"error\": \"An error has occurred\"}"));
(olmayan bir varolan birine URL'lerin birinin alanı adını değiştirerek bu davranışı taklit edebilir), sayfa içeriyor döndü Sadece istisnai() kısımda yer alan mesaj, doğru aramaların içeriğini ve başarılı olmayan aramanın hata mesajını geri göndermem gerekir. Nasıl yapılacağına dair bir ipucu var mı?
Oyna 2.5.1 kullanıyorum.
sayesinde Andrea
aslında benim yaptığım JSON manipülasyonu burada gönderdiğim örnekden daha karmaşık, ancak ObjectMapper çok iyi bir ipucu. Teşekkürler! –