我有以下来自Spring Boot的函数。我无法使用声明式客户端执行此操作,因此我的 uri 域在每次调用后都会更改,所以我需要一个像 Spring Boot 一样的 RestTemplate。
如何在Micronaut中实现相同的目标?
private static void getEmployees()
{
final String uri = "http://localhost:8080/springrestexample/employees.xml";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
System.out.println(result);
}
这样的东西是一个很好的起点...
import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;
import javax.inject.Inject;
@Controller("/")
public class SomeController {
// The url does not have to be
// hardcoded here. Could be
// something like
// @Client("${some.config.setting}")
@Client("http://localhost:8080")
@Inject
RxHttpClient httpClient;
@Get("/someuri")
public HttpResponse someMethod() {
String result = httpClient.toBlocking().retrieve("/springrestexample/employees.xml");
System.out.println(result);
// ...
return HttpResponse.ok();
}
}
我希望这有所帮助。
编辑
另一种类似的方法:
import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;
@Controller("/")
public class SomeController {
private final RxHttpClient httpClient;
public SomeController(@Client("http://localhost:8080") RxHttpClient httpClient) {
this.httpClient = httpClient;
}
@Get("/someuri")
public HttpResponse someMethod() {
String result = httpClient.toBlocking().retrieve("/springrestexample/employees.xml");
System.out.println(result);
// ...
return HttpResponse.ok();
}
}