Java 服务器端注释的 REST 客户端库

问题描述 投票:0回答:5

我正在构建一个使用外部 REST 服务(来自服务器端)的中间件服务。我目前正在使用 Spring boot 和 RestTemplate 来进行远程调用。

    Map<String, String> urlVariables = new HashMap<>();
    urlVariables.put("address", IP);
    urlVariables.put("port", PORT);
    urlVariables.put("par1", parameter1);
    urlVariables.put("par2", parameter2);

    MyServiceResponse state =
            restTemplate.getForObject("http://{address}:{port}/service/{par1}/{par2}", MyServiceResponse.class, urlVariables);

我想知道是否有任何库可以提供注释来自动生成 REST 客户端,就像 Android 中的 Volley 那样。

@GET(url="http://{address}:{port}/service/{par1}/{par2}")
public MyServiceResponse getCurrentState(String address, String port, String par1, String par2)
java spring annotations rest-client
5个回答
1
投票

RESTEasy代理框架

Resteasy 有一个客户端代理框架,允许您使用 JAX-RS 在远程 HTTP 资源上调用的注释。它的工作原理是 您编写 Java 接口并在方法上使用 JAX-RS 注释 和界面。


0
投票

你在寻找这样的东西吗?:

https://github.com/dpalmisano/NoTube-Beancounter-2.0/blob/master/platform/src/main/java/io/beancounter/platform/rai/MyRaiTVService.java#L45

@POST
@Path("/login/auth")
public Response loginWithAuth(
        @FormParam("username") String username,
        @FormParam("token") String token

) {
    try {
        Validations.checkNotEmpty(username, "Missing username parameter");
        Validations.checkNotEmpty(token, "Missing MyRaiTV token parameter");
    } catch (Exception ex) {
        return error(ex.getMessage());
    }


0
投票

您可以使用REST Gap来实现此目的。您只需:

  • 具有 Spring MVC 或 JAX-RS 风格的注释接口
  • 调用 REST Gap 工厂并传递您的接口和 RestTemplate 实例
  • 接收调用 REST 服务的接口的实现

这就是代码中的样子(对于 Spring-MVC 接口 IPetStoreService):

// Create client
IPetStoreService client = RESTTemplateSpringMVCFactory
    .create(restTemplate, "http://mypetstore.com/rest", IPetStoreService.class);

// Call it!
List<Pet> pets = client.listPets();

就是这样!


0
投票

我知道我来晚了一点,但 Feign 是一个不错的选择。我在 Spring Boot 应用程序中使用了它,这些应用程序是本身消耗其他内部 Web 服务的 Web 服务。只需编写一个 Java 接口并对其进行最少的注释,并为您完成样板代码,这真是太好了。

https://github.com/OpenFeign/feign

有关 Spring 集成的更多信息,请参阅 https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/

请注意,最新的 Feign 至少需要 Java 8,但如果需要,您应该能够获得支持 Java 6 的版本。

我知道 Java 11 有一个 HttpClient ,它可能适合也可能不适合你的需求,但我承认我对它还不太了解。

© www.soinside.com 2019 - 2024. All rights reserved.