package Ġcom . k ous en it . rest client . services Ċ Ċ import Ġcom . k ous en it . rest client . json . Jo ke Response Ċ import Ġorg . springframework . boot . web . client . Rest Template Builder Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġorg . springframework . web . client . get For Object Ċ import Ġorg . springframework . web . reactive . function . client . Web Client Ċ import Ġorg . springframework . web . reactive . function . client . body To Mono Ċ import Ġreactor . core . publisher . Mono Ċ Ċ @ Service Ċ class ĠJo ke Service ( builder : ĠRest Template Builder ) Ġ{ ĊĠĠĠ Ġval Ġrest Template : ĠRest Template Ġ= Ġbuilder . build () ĊĠĠĠ Ġval Ġclient : ĠWeb Client ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠWeb Client . create (" http :// api . ic n db . com ") ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBASE Ġ= Ġ" http :// api . ic n db . com / j okes / random ? limit To =[ ner dy ]" ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġpath Ġ= Ġ"/ j okes / random ? limit To =[ ner dy ]& firstName ={ first }& lastName ={ last }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Jo ke ( first : ĠString , Ġlast : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"$ BASE & firstName =$ first & lastName =$ last " ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . get For Object < Jo ke Response >( url ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ?. value ?. jo ke Ġ?: Ġ" No Ġjo ke Ġreturned " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Jo ke Async ( first : ĠString , Ġlast : ĠString ): ĠMono < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( path , Ġfirst , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body To Mono < Jo ke Response >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ?. value ?. jo ke Ġ?: Ġ" No Ġjo ke Ġreturned " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ }