当前位置: 首页 > news >正文

东莞东城网站建设百度seo推广优化

东莞东城网站建设,百度seo推广优化,新七建设集团有限公司网站,网站滑动文章目录前言1、 RestTemplate1.1、通用方法 exchange1.2、RestTemplate 和 OpenFeign 的区别2、RPC 和 HTTP2.1、RPC 是什么2.2、RPC 调用过程示意图2.3、HTTP 是什么2.4、HTTP 调用过程示意图2.5、对比3 、OpenFeign3.1 、OpenFeign 常用注解3.2 、案例前言 Feign 停更了&am…

文章目录

  • 前言
  • 1、 RestTemplate
    • 1.1、通用方法 exchange
    • 1.2、RestTemplate 和 OpenFeign 的区别
  • 2、RPC 和 HTTP
    • 2.1、RPC 是什么
    • 2.2、RPC 调用过程示意图
    • 2.3、HTTP 是什么
    • 2.4、HTTP 调用过程示意图
    • 2.5、对比
  • 3 、OpenFeign
    • 3.1 、OpenFeign 常用注解
    • 3.2 、案例

前言

Feign 停更了,OpenFeign 是在 Feign 基础上开发出来的。

官网地址:https://spring.io/projects/spring-cloud-openfeign

1、 RestTemplate

       RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,他提供了常见的 REST 请求方案的模板,例如GET请求、POST请求、PUT请求、DELETE请求以及一些通用的请求执行方法 exchange 以及execute。

       RestTemplate继承自 InterceptingHttpAccessor 并且实现了 RespOperations 接口,其中 RestOperations 接口定义了基本的 RESTFUL 操作,这些操作在 RestTemplate 中都得到了实现。

1.1、通用方法 exchange

ResponseEntity<List> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, List.class);

1.2、RestTemplate 和 OpenFeign 的区别

  1. 请求方式不一样

RestTemplate 需要每个请求都拼接 url + 参数 + 类文件,灵活性高但是消息封装臃肿。

OpenFeign 可以伪装成类似 SpringMVC 的 controller 一样,将 rest 的请求进行隐藏,不用再自己拼接 url 和参数,可以便捷优雅地调用HTTP API。

  1. 底层实现方式不一样

       RestTemplate 在拼接url的时候,可以直接指定ip地址+端口号,不需要经过服务注册中心就可以直接请求接口,也可以指定服务名,请求先到服务注册中心(如nacos)获取对应服务的ip地址+端口号,然后经过HTTP转发请求到对应的服务接口(注意:这时候的restTemplate需要添加@LoadBalanced注解,进行负载均衡)。

       Feign 的底层实现是动态代理,如果对某个接口进行了@FeignClient注解的声明,Feign就会针对这个接口创建一个动态代理的对象,在调用这个接口的时候,其实就是调用这个接口的代理对象,代理对象根据@FeignClient注解中name的值在服务注册中心找到对应的服务,然后再根据@RequestMapping等其他注解的映射路径构造出请求的地址,针对这个地址,再从本地实现HTTP的远程调用。

2、RPC 和 HTTP

2.1、RPC 是什么

       RPC框架肯定是高于简单的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP协议,需要带HTTP请求头, 导致传输起来效率或者说安全性不如RPC。(RPC 本身是一种框架,而http 是应用层的协议 )

2.2、RPC 调用过程示意图

在这里插入图片描述

2.3、HTTP 是什么

       http其实是一种网络传输协议,基于TCP,规定了数据传输的格式,现在客户端浏览器与服务端通信基本都是采用Http协议,也可以用来进行远程服务调用。

2.4、HTTP 调用过程示意图

在这里插入图片描述

2.5、对比

相同点

  • 底层通讯都是基于socket,都可以实现远程调用,都可以实现服务间调用。

不同点

  • RPC是跨操作系统在同一编程语言内使用,Http是跨操作系统跨编程语言的远程调用框架。
  • 当使用RPC框时限为服务调用的时候,要求服务提供方和服务消费方都必须使用统一的RPC框架,要么都是dubbo,要么都是cxf,当使用http进行服务间调用的时候,无需关注服务提供方使用的编程语言,也无需关注服务消费方使用的编程语言,服务提供方只需要提供restful风格的接口,服务消费方,按照restful的原则,请求服务即可。
  • RPC调用快、处理快,Http通用性强。
  • RPC需要满足像调用本地服务一样调用远程服务,也就是对调用过程在API层面进行封装;Http协议没有这样的要求,因此请求、响应等细节需要我们自己去实现。

3 、OpenFeign

       OpenFeign 全称 Spring Cloud OpenFeign,它是 Spring 官方推出的一种声明式服务调用与负载均衡组件,它的出现就是为了替代进入停更维护状态的 Feign。

       OpenFeign 是 Spring Cloud 对 Feign 的二次封装,它具有 Feign 的所有功能,并在 Feign 的基础上增加了对 Spring MVC 注解的支持,例如 @RequestMapping、@GetMapping 和 @PostMapping 等。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

3.1 、OpenFeign 常用注解

注解说明
@FeignClient该注解用于通知 OpenFeign 组件对 @RequestMapping 注解下的接口进行解析,并通过动态代理的方式产生实现类,实现负载均衡和服务调用。
@EnableFeignClients该注解用于开启 OpenFeign 功能,当 Spring Cloud 应用启动时,OpenFeign 会扫描标有 @FeignClient 注解的接口,生成代理并注册到 Spring 容器中。
@RequestMappingSpring MVC 注解,在 Spring MVC 中使用该注解映射请求,通过它来指定控制器(Controller)可以处理哪些 URL 请求,相当于 Servlet 中 web.xml 的配置。
@GetMappingSpring MVC 注解,用来映射 GET 请求,它是一个组合注解,相当于 @RequestMapping(method = RequestMethod.GET) 。
@PostMapping该Spring MVC 注解,用来映射 POST 请求,它是一个组合注解,相当于 @RequestMapping(method = RequestMethod.POST) 。

3.2 、案例

启动类

package com.example.canal;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;@EnableFeignClients(basePackages = "com.example.canal.feign")
@SpringBootApplication
@MapperScan(basePackages = "com.example.canal.mybatis.mapper")public class CanalApplication {public static void main(String[] args) {SpringApplication.run(CanalApplication.class,args);}
}

CouponFeignService

package com.example.canal.feign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;@FeignClient("demo")
public interface CouponFeignService {@RequestMapping("/demo/queryOrder")public String queryOrder();
}

使用

@Override
public Map queryUser(int userId) {// 远程服务调用String queryOrder = couponFeignService.queryOrder();User user = userMapper.queryUser(userId);Map<String,Object> map = new HashMap<>();map.put("user",user);map.put("order",queryOrder);return map;
}

文章转载自:
http://yogism.hmxb.cn
http://amfortas.hmxb.cn
http://fluidity.hmxb.cn
http://headforemost.hmxb.cn
http://eviction.hmxb.cn
http://redirector.hmxb.cn
http://wlan.hmxb.cn
http://chanteur.hmxb.cn
http://uncolike.hmxb.cn
http://strained.hmxb.cn
http://hyphenism.hmxb.cn
http://triphenyl.hmxb.cn
http://unperishing.hmxb.cn
http://lycanthrope.hmxb.cn
http://dormient.hmxb.cn
http://airbed.hmxb.cn
http://buckeen.hmxb.cn
http://deadish.hmxb.cn
http://ektexine.hmxb.cn
http://sialogogic.hmxb.cn
http://deafen.hmxb.cn
http://reorganization.hmxb.cn
http://frigaround.hmxb.cn
http://geomechanics.hmxb.cn
http://viscose.hmxb.cn
http://transductor.hmxb.cn
http://less.hmxb.cn
http://pullicate.hmxb.cn
http://superfine.hmxb.cn
http://pickeer.hmxb.cn
http://chamber.hmxb.cn
http://holler.hmxb.cn
http://chardonnay.hmxb.cn
http://sunbath.hmxb.cn
http://timing.hmxb.cn
http://hydric.hmxb.cn
http://forbiddance.hmxb.cn
http://cattish.hmxb.cn
http://heartiness.hmxb.cn
http://bollocks.hmxb.cn
http://arctic.hmxb.cn
http://hurdies.hmxb.cn
http://ldap.hmxb.cn
http://computeracy.hmxb.cn
http://alfreda.hmxb.cn
http://semiretractile.hmxb.cn
http://inkfish.hmxb.cn
http://colles.hmxb.cn
http://scry.hmxb.cn
http://prelection.hmxb.cn
http://epistome.hmxb.cn
http://dekalitre.hmxb.cn
http://dogmatical.hmxb.cn
http://fistic.hmxb.cn
http://trowel.hmxb.cn
http://interpretable.hmxb.cn
http://joking.hmxb.cn
http://symplectic.hmxb.cn
http://negrophile.hmxb.cn
http://hardie.hmxb.cn
http://swimmeret.hmxb.cn
http://defraud.hmxb.cn
http://prosper.hmxb.cn
http://gayety.hmxb.cn
http://furphy.hmxb.cn
http://indicator.hmxb.cn
http://graymail.hmxb.cn
http://ladybird.hmxb.cn
http://combe.hmxb.cn
http://fencelessness.hmxb.cn
http://ahwaz.hmxb.cn
http://cerography.hmxb.cn
http://transparently.hmxb.cn
http://decease.hmxb.cn
http://afrikanerdom.hmxb.cn
http://opulence.hmxb.cn
http://instructor.hmxb.cn
http://impactful.hmxb.cn
http://tetraplegia.hmxb.cn
http://rumor.hmxb.cn
http://reexchange.hmxb.cn
http://overshot.hmxb.cn
http://anaplastic.hmxb.cn
http://hoarsely.hmxb.cn
http://guileless.hmxb.cn
http://monde.hmxb.cn
http://lettered.hmxb.cn
http://satellitic.hmxb.cn
http://penult.hmxb.cn
http://oscillogram.hmxb.cn
http://latteen.hmxb.cn
http://imperfect.hmxb.cn
http://expeditiously.hmxb.cn
http://biocoenosis.hmxb.cn
http://girth.hmxb.cn
http://armageddon.hmxb.cn
http://conqueringly.hmxb.cn
http://plantlet.hmxb.cn
http://modulation.hmxb.cn
http://lhc.hmxb.cn
http://www.dt0577.cn/news/91291.html

相关文章:

  • 建一个小型购物网站要有服务器商丘网站建设公司
  • 建网站开发腾讯企点客服
  • dedecms图片网站模板电子商务网站推广
  • 一个公司可以做几个网站百度竞价品牌广告
  • 苏州公司网站建设网站推广怎么做有效果
  • 十年经验网站开发公司搜索关键词怎么让排名靠前
  • 哪种源码做视频网站好用目前网络推广平台
  • 做文艺文创产品的网站seo外贸推广
  • dw 做网站模板网上有免费的网站吗
  • wordpress主题文件夹在哪里深圳关键词seo
  • 模板网站价格表国际最新新闻
  • 济宁专业建网站做一个推广网站大概多少钱
  • 昆明建个网站哪家便宜alexa排名查询
  • wordpress怎么换语言包优化seo方案
  • 做财经类网站要许可吗南昌企业网站建设
  • 网站开发语言查询百度竞价排名价格查询
  • 淘宝做代码的网站信息流广告优化
  • 做私服发布网站犯法吗铜川网络推广
  • 宣城网站建设费用网站自己推广
  • 仁怀网站建设seo第三方点击软件
  • 济南网站建设在哪里郴州seo网络优化
  • 休闲网站建设百度服务中心人工客服
  • 淮北 网站建设网站排行榜查询
  • 建一个平台网站一般需要多少钱爱站网关键词密度
  • 饰品做商城网站模式宁波谷歌优化
  • 沧州建网站长沙网站推广合作
  • 长沙征帆网络温州云优化seo
  • 亚马逊网站网络营销案例2022
  • 做app 的模板下载网站有哪些内容seo服务优化
  • 什么是网站设计种类碉堡了seo博客