我们定义一套用户信息增删改查的接口,详细给大家介绍Feign客户端定义。
一:服务提供者暴露的接口
package com.wendao.provider.web;
import com.wendao.provider.pojo.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
@RestController
@RequestMapping("/user")
public class ProviderController {
@RequestMapping(value = "/update")
public Map update(@RequestBody User user) {
System.out.println(user);
//调用service层获取用户信息,这步省略...
return new HashMap();
}
@RequestMapping(value = "/delete")
public Map deleteByIds(Integer[] ids) {
System.out.println(Arrays.toString(ids));
//调用service层获取用户信息,这步省略...
return new HashMap();
}
@RequestMapping(value = "/{userId}")
public User findUserById(@PathVariable Integer userId) {
System.out.println(userId);
//调用service层获取用户信息,这步省略...
return new User("jack", 12);
}
@RequestMapping(value = "/search")
public User search(Integer age,String name) {
System.out.println("age:"+age+"name:"+name);
//调用service层获取用户信息,这步省略...
return new User("rose", 12);
}
@RequestMapping(value = "/searchMap")
public List<User> searchMap(@RequestBody Map map) {
System.out.println(map);
//调用service层获取用户信息,这步省略...
List<User> users = new ArrayList<>();
users.add(new User("jack",12));
users.add(new User("rose",18));
return users;
}
}
@PathVariable:专门获取路径参数(restful风格路径)回顾springmvc知识点:接口方法中获取数据有3类注解,分别是@PathVariable、@RequestBody、@RequestParam
@RequestBody:专门获取json数据并将json数据转换成pojo
@RequestParam:专门获取非json数据,如果名字对应一般可以省略不写。
或者
二:Feign接口定义:
@FeignClient("spring-cloud-service-provider")
public interface IuserBiz {
@RequestMapping(value = "/user/update")
public Map update(@RequestBody User user) ;
@RequestMapping(value = "/user/delete")
public Map deleteByIds(@RequestParam("ids") Integer[] ids) ;//@RequestParam不能省略,而且ids也不能省略
@RequestMapping(value = "/user/{userId}")
public User findUserById(@PathVariable("userid") Integer userId); //@PathVariable不能省略,而且userid也不能省略
@RequestMapping(value = "/user/search")
public User search(@RequestParam("age") Integer age,@RequestParam("name") String name);
@RequestMapping(value = "/user/searchMap")
public List<User> searchMap(@RequestBody Map map);
}
注意点:
三:消费者调用服务接口
@FeignClient("spring-cloud-service-provider")
public interface IuserBiz {
@RequestMapping(value = "/user/update")
public Map update(@RequestBody User user) ;
@RequestMapping(value = "/user/delete")
public Map deleteByIds(@RequestParam("ids") Integer[] ids) ;//@RequestParam不能省略,而且ids也不能省略
@RequestMapping(value = "/user/{userId}")
public User findUserById(@PathVariable("userid") Integer userId); //@PathVariable不能省略,而且userid也不能省略
@RequestMapping(value = "/user/search")
public User search(@RequestParam("age") Integer age,@RequestParam("name") String name);
@RequestMapping(value = "/user/searchMap")
public List<User> searchMap(@RequestBody Map map);
}