2016-03-04 103 views
0

我正在构建使用外部REST服务(从服务器端)的中间件服务。我目前使用RestTemplate的Spring引导来进行远程调用。Java服务器端注释的REST客户端库

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客户端,就像Volley在Android中所做的那样。

@GET(url="http://{address}:{port}/service/{par1}/{par2}") 
public MyServiceResponse getCurrentState(String address, String port, String par1, String par2) 

回答

1

还有就是RESTEasy Proxy Framework

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

+0

这看起来正是我需要的,现在让我们看看它是如何与Spring Boot –

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峡工厂,并通过您的界面和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(); 

就是这样!