所以我有一个返回JSON对象并使用基本身份验证的微服务。
然后我有一个Springboot客户端应用程序,它将对服务进行GET或POST调用。
1)客户端将POST / login,然后将凭据存储在客户端应用程序中
2)然后在每次GET或POST调用时,将以编程方式添加基本标头并使用RestTemplate调用服务。
例如,用户尝试获取项目:
1)通过ajax调用获取http://client/item/ {id}
2)客户端应用会对服务进行RestTemplate调用http://service/item/ {id}
所以我正在编写所有映射2次...我不想在js中公开身份验证详细信息,并且该服务可能会返回我将存储在客户端应用程序中的令牌或信息。
我做错了吗?我在Thymeleaf中使用HTML。
答案 0 :(得分:1)
如果它是一个绿地项目,我建议转移到Angular或ReactJs + Redux或类似的类别,而不是使用百里香。
但这是一个不同的讨论。回到你的问题,你有两个不同的应用程序是什么原因?为什么不能将所有服务(http://service/item)端点移动到客户端(http://client)。服务(http://service/item)和客户(http://client)是否归您或您的团队所有?
如果迫切需要将服务(http://service/item)和客户端(http://client)分开,那么代码重复是您应该愿意支付的,its the curse of Microservices。
其他观点是,您不必将其视为代码重复,假设服务(http://service/item)在Java中,而客户端(http://client)在NodeJ中,那么机会非常少,你会认为它重复自己。
通过将Java Model类作为库发布并在服务(http://service/item)和客户端(http://client)中使用它,可以将代码重复减少一点。我会阻止这种模式,因为你用相同的编程语言来绑定你的制作人和消费者。