ribbon中如果要调用服务端的接口,需要使用到restTemplate,使用restTemplate提供的api返回多个元素是一个数组了下的。
feign中提供的接口如果要返回集合类型的数据,数据类型和服务端的返回的数据类型一致即可
消费端
UserConstroller.java
Ribbon调用微服务的方法
@ResponseBody
@GetMapping("/list")
public User[] list(){
//http://spring-cloud-provider/user/list返回List<User>的数据类型
User[] list = restTemplate.getForObject("http://spring-cloud-provider/user/list", User[].class);
return list;
}
Feign调用微服务的方法
@ResponseBody
@GetMapping("/feign_list")
public List<User> feign_list(){
List<User> list = userFeignClient.list();
return list;
}
UserFeignClient.java
@RequestMapping(value="/user/list",method=RequestMethod.GET)
public List<User> list();
服务提供端
UserController.java
package com.example.demo.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.model.User;
@RestController
@RequestMapping(value="/user")
public class UserController {
private Map<String, User> umap = new HashMap();
public UserController(){
umap.put("1", new User("1", "xiaoming1", 30));
umap.put("2", new User("2", "xiaohong1", 20));
umap.put("3", new User("3", "zhangsan1", 80));
umap.put("4", new User("4", "lisi1", 10));
umap.put("5", new User("5", "wangwu1", 22));
}
@RequestMapping(value="/get")
@ResponseBody
public List<User> list(){
List<User> list = new ArrayList<User>();
for(Entry<String, User>e:umap.entrySet()){
list.add(e.getValue());
}
return list;
}
@RequestMapping(value="/list")
@ResponseBody
public User get(String id){
return umap.get(id);
}
}