2016-12-05 61 views
-2

我需要一个其响应为HTML的休息结束点。但是我不想在我的项目中定义一个视图,而是希望从该休息终点内发出的另一个请求转发HTML响应。 例如,我的休息结束点向内部服务发出一个http请求并返回从该服务返回的HTML?可能吗?有什么想法吗? 这里是一个代码示例Spring引导/ Spring MVC - 如何转发来自另一个请求的响应

@RequestMapping("/test") 
public String testMe(Model model, @RequestParam("param1") String param1, @RequestParam("param2") String param2) 
{ 
    //Make a Http call to an internal service and return the response from that call 
    return "<RESPONSE_FROM_THAT_CALL>"; 
} 

我想返回从内部服务的HTML响应

+1

所以你的问题是如何返回一个字符串? – zeroflagL

+0

如果我返回一个字符串,那么spring会假定它的名称和视图出错。我想返回HTML作为响应的一部分 – Gowtham

+0

HTML文档是一个字符串,不是吗?如果一个方法用'@ ResponseBody'注释,那么Spring会返回字符串,而不是视图。 – zeroflagL

回答

1

您可以使用RestTemplate从其他服务获取结果,就回到它作为一个String

@Controller 
public class MyController { 

    private RestTemplate restTemplate = new RestTemplate(); 

    @ResponseBody 
    @RequestMapping("/test") 
    public String testMe(Model model, @RequestParam("param1") String param1, @RequestParam("param2") String param2) { 
     URI uri = UriComponentsBuilder.fromHttpUrl("http://www.example.com"); 
      .queryParam("param1", param1) 
      .queryParam("param2", param2) 
      .build() 
      .toUri()); 
     return restTemplate.getForObject(uri, String.class); 
    } 
} 

如果您有更多的端点需要代理到另一个服务,您应该考虑使用eg Zuul作为微代理。见例如this blog post解释如何轻松创建这样的代理。