ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

spring – 如何从JHIPSTER网关存储库或服务手动调用微服务

2019-08-28 21:18:41  阅读:293  来源: 互联网

标签:jhipster spring resttemplate netflix-ribbon


我是Jhipster的新手,想知道是否可以使用RestTemplate或其他方法从网关代码手动调用微服务.

我的第一个想法是打电话给网关……但我不确定这是个好主意.
我的第二个想法是尝试通过它的URL调用服务.我担心的是我不想硬编码给定节点的端口.相反,我想使用适当的负载平衡.

我已经阅读了这篇文章https://dzone.com/articles/spring-cloud-rest-client-with-netflix-ribbon-basic,但注射失败了.

我已经在其他地方读过你现在需要手动添加bean声明的内容

@LoadBalanced
@Bean
RestTemplate restTemplate(){
    return new RestTemplate();
}

但现在我正在努力实际的URI:我应该把它作为根? (XXXXX)

final HcpVersionedhcp hcpVersionedhcp = 
            restTemplate.exchange("http://xxxxx/api/user-data/byLogin/", UserData.class);

我在网关application.yml中唯一的配置是

ribbon:
eureka:
    enabled: true

解决方法:

必须用您的服务名称替换“xxxxx”.如果你的服务是“foo”,你应该写http:// foo / api / user ….

如果您使用JWT作为身份验证,则需要在JHipster中使用用户a进行身份验证,或者尽可能从请求中传递JWT令牌.然而,这不是JWT auth的最佳实践,所以我建议采用JHipster UAA方式.
简而言之,您还有一项服务负责身份验证和授权.要从其他服务访问您的服务,您可以在接口上使用@AuthorizedFeignClient,类似于JPA.

所以你定义:

@AuthorizedFeignClient(name = "xxxx")
interface XxxClient {

   @RequestMapping(value = "/api/some-entities/{id}")
   SomeEntity getSomeEntityById(Long @Path("id") id);
}

并将其注入任何弹簧服务/休息控制器,如下所示:

@Inject
private XxxClient xxxClient;

//...

public void someAction() {
   //...
   xxxClient.getEntityById(id);
   //..
}

哪个内部实现客户端授权流程……

标签:jhipster,spring,resttemplate,netflix-ribbon
来源: https://codeday.me/bug/20190828/1755880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有