如何从我的控制器在Micronaut中调用另一个rest api,就像在Spring-Boot RestTemplate



我有以下来自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();
    }
}

最新更新