与RestTemplate相比,使用foreign的优点和缺点是什么



我知道Feign是声明性的,因此它为开发人员抽象了很多东西。但是,什么时候应该选择一个而不是另一个呢?尽管foreign是声明性的,但它在oAuth方面存在严重问题。在Feign 上使用RestTemplate有哪些注意事项

Feign允许您抽象调用REST服务的机制。一旦配置并注释了Feign接口,就可以通过简单的Java函数调用来调用REST服务。进行REST调用的实际实现由Feign在运行时处理。这意味着可以在不更改业务逻辑代码的情况下配置实现。

只需更改Java中的Feign配置或使用属性,就可以添加编码/解码、日志记录和更改REST调用实现库。所有这些都只通过配置完成,而调用服务的业务逻辑保持不变。

由于Feign使用标准Java接口,因此在单元测试期间模拟它们也很容易。

有一定的优势。

1.URL不是硬编码的。

2.你不必为foreign编写单元测试用例,因为没有代码可以测试,但你必须编写集成测试。

3.我们可以使用Eureka客户端ID而不是URL。

4.Feign处理了实际代码。

5.Feign与Ribbon和Eureka自动集成。

6.Feign提供了一种非常简单的方法来调用RESTful服务。

RestTemplate相比,使用Feign的优势之一是,我们不需要编写任何实现来调用其他服务。所以有没有需要编写任何单元测试,因为首先没有要测试的代码。但是,建议我们编写集成测试。

与rest模板相比,使用Feign客户端有很多优点。我将在下面列出这些。

  1. 开发人员不必担心实现。只是为了创建抽象的Feign接口和一些注释-声明性道德原则(如果您想要自定义配置,则它将保持某些代码)

  2. 通过Spring Cloud Eureka,Ribbon客户端负载均衡器将配备Feign客户端。

  3. 无需担心单元测试,因为您没有要测试的实现。(可论证)

  4. 支持Feign注释和JAX-RS注释。

  5. 与Spring Cloud高度兼容且易于配置(特别是与Eureka服务器注册表)

  6. 允许通过@configuration类或应用程序属性配置Feign客户端。

  7. 允许我们添加拦截器。(通过@Configuration或应用程序属性添加拦截器。或者,可以使用Spring Cloud也提供了拦截器。示例-BasicAuthRequestInterceptor)

  8. Hystrix支持后退机制。

  9. 记录

  10. 错误处理

Feign是一个不错的选择,如果你对JPA及其解决查询的方式很着迷,那么Feign就是你的工具。Feign会很好地处理您的服务器请求。

RestTemplate用于进行同步调用。当使用RestTemplate时,URL参数是以编程方式构建的,并且数据被发送到另一个服务。在更复杂的场景中,我们必须了解RestTemplate提供的HTTP API的详细信息,甚至了解更低级别的API

Feign是一个Spring Cloud Netflix库,用于提供比基于REST的服务调用更高级别的抽象Spring Cloud Feign的工作原理是声明性的。当使用Feign时,我们在客户端编写声明性REST服务接口,并使用这些接口对客户端进行编程。开发人员不必担心实现。。。

即使在这之后,我也知道它的老问题,根据我的说法,使用外国客户端比使用其他模板有以下主要好处。

  1. 除了外部接口,开发人员不需要编写任何代码,因此不存在错误或单元测试的范围。

  2. 没有URL的硬编码,结合Eureka命名服务器,只有服务名称id就足以调用该服务。

  3. 使用尤里卡自动提供负载平衡功能。

使用Feign优于RestTemplate的优点:

声明性方法:Feign提供了一种更具声明性的方法来定义和使用REST API客户端,这可以使代码更易读,更易于维护。

与尤里卡集成:Feign与Netflix尤里卡集成用于服务发现,使在微服务架构中构建和使用API变得更容易。

更好的错误处理:Feign提供了更好的错误管理,包括支持自定义错误处理和重试。

支持多种编码:Feign支持多种编码类型,包括JSON、XML和表单数据,而RestTemplate只支持JSON和XML。

使用Feign而非RestTemplate的缺点:

有限的灵活性:Feign提供了一种更具主见的方法来定义和使用REST API客户端,这可能会限制某些情况下的灵活性。

对HTTP请求和响应的有限控制:Feign抽象了HTTP请求和回应的一些低级细节,这可能会使控制和自定义这些细节变得更加困难。

缺乏官方支持:Feign不是Spring的官方支持库,这可能是一些开发人员或组织的考虑因素。

相关内容

  • 没有找到相关文章

最新更新