当前位置:网站首页>RestTemplate与Ribbon简单使用
RestTemplate与Ribbon简单使用
2022-07-25 11:21:00 【dengjili】
RestTemplate
RestTemplate是访问rest 接口的对象,提供相应的访问方法
配置创建RestTemplate
@Configuration
public class RestTemplateConfiguration {
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
创建三个测试访问的uri
@RestController
public class DemoController {
@GetMapping("/demo/data")
public Foo getData(@RequestParam("name") String name) {
Foo foo = new Foo();
foo.setId(1);
foo.setName(name);
return foo;
}
@GetMapping("/demo/data/{name}")
public String getData2(@PathVariable("name") String name) {
return name + "plus";
}
@PostMapping("/data/save")
public long addData(@RequestBody Foo foo) {
System.out.println(foo.getName());
return 10001;
}
}
RestTemplate调用
@RestController
public class RestTemplateController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/call/data")
public Foo getData(@RequestParam("name") String name) {
Foo result = restTemplate.getForObject("http://localhost:8080/demo/data?name=" + name, Foo.class);
return result;
}
@GetMapping("/call/data/{name}")
public String getData2(@PathVariable("name") String name) {
String result = restTemplate.getForObject("http://localhost:8080/demo/data/{name}", String.class, name);
return result + "call back";
}
@GetMapping("/call/data3")
public Foo getData3(@RequestParam("name") String name) {
ResponseEntity<Foo> entity = restTemplate.getForEntity("http://localhost:8080/demo/data?name=" + name, Foo.class);
System.out.println(entity.getStatusCodeValue());
Foo result = entity.getBody();
return result;
}
@GetMapping("/call/data/save")
public long addDataTest() {
Foo foo = new Foo();
foo.setId(1);
foo.setName("test");
long result = restTemplate.postForObject("http://localhost:8080/data/save", foo, Long.class);
return result;
}
}
Ribbon

Ribbon是正向代理,代理客户端向服务器发起请求,这里代理后,进行负载均衡功能
引入依赖,Ribbon需要依赖于注册中心eureka
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
添加配置项,修改配置文件application.properties
eureka.client.serviceUrl.defaultZone=http://192.168.0.102:8761/eureka
修改RestTemplate对象的创建,添加注解@LoadBalanced
@Configuration
public class RestTemplateConfiguration {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
调用rest接口,将ip和端口换成应用注册名称,如下eureka-provider-app
@GetMapping("/call/loadbalanced")
public String loadBalanced() {
String result = restTemplate.getForObject("http://eureka-provider-app/hello", String.class);
return result;
}

边栏推荐
- [RS sampling] a gain tuning dynamic negative sampler for recommendation (WWW 2022)
- Introduction to pl/sql, very detailed notes
- 【高并发】SimpleDateFormat类到底为啥不是线程安全的?(附六种解决方案,建议收藏)
- 一文入门Redis
- Transformer变体(Sparse Transformer,Longformer,Switch Transformer)
- Brpc source code analysis (VIII) -- detailed explanation of the basic class eventdispatcher
- Multi label image classification
- JS operator
- 【GCN-RS】Learning Explicit User Interest Boundary for Recommendation (WWW‘22)
- 小程序image 无法显示base64 图片 解决办法 有效
猜你喜欢

那些离开网易的年轻人

What is the global event bus?

【GCN-CTR】DC-GNN: Decoupled GNN for Improving and Accelerating Large-Scale E-commerce Retrieval WWW22

GPT plus money (OpenAI CLIP,DALL-E)

从云原生到智能化,深度解读行业首个「视频直播技术最佳实践图谱」

【GCN-RS】Region or Global? A Principle for Negative Sampling in Graph-based Recommendation (TKDE‘22)

投屏收费背后:爱奇艺季度盈利,优酷急了?

Functions in JS

Knowledge maps are used to recommend system problems (mvin, Ctrl, ckan, Kred, gaeat)

【Debias】Model-Agnostic Counterfactual Reasoning for Eliminating Popularity Bias in RS(KDD‘21)
随机推荐
[multimodal] transferrec: learning transferable recommendation from texture of modality feedback arXiv '22
【GCN-RS】Learning Explicit User Interest Boundary for Recommendation (WWW‘22)
Brpc source code analysis (VIII) -- detailed explanation of the basic class eventdispatcher
Zero-Shot Image Retrieval(零样本跨模态检索)
【GCN-RS】MCL: Mixed-Centric Loss for Collaborative Filtering (WWW‘22)
创新突破!亚信科技助力中国移动某省完成核心账务数据库自主可控改造
Zero shot image retrieval (zero sample cross modal retrieval)
Brpc source code analysis (V) -- detailed explanation of basic resource pool
dirReader. Readentries compatibility issues. Exception error domexception
NLP知识----pytorch,反向传播,预测型任务的一些小碎块笔记
【AI4Code最终章】AlphaCode:《Competition-Level Code Generation with AlphaCode》(DeepMind)
【多模态】《TransRec: Learning Transferable Recommendation from Mixture-of-Modality Feedback》 Arxiv‘22
硬件连接服务器 tcp通讯协议 gateway
小程序image 无法显示base64 图片 解决办法 有效
[multimodal] hit: hierarchical transformer with momentum contract for video text retrieval iccv 2021
Multi-Label Image Classification(多标签图像分类)
给生活加点惊喜,做创意生活的原型设计师丨编程挑战赛 x 选手分享
R语言ggplot2可视化:使用ggpubr包的ggviolin函数可视化小提琴图、设置add参数在小提琴内部添加抖动数据点以及均值标准差竖线(jitter and mean_sd)
Go 垃圾回收器指南
Management of software defects