且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-09-05 12:05:16

这样的事情是一个很好的起点...

Something like this is a good starting point...

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();
    }
}