REST与RPC
什么是REST
REST是一种设计风格,它是面向资源的,资源即网络上所有可以访问的东西。而资源是可以通过URI(统一标识符)找到并进行暴露的。
URI就像是一个资源的身份证,是唯一标识的。如果要操作这个资源,直接将这个资源暴露出来即可。至于对资源执行什么操作是通过HTTP的动词来体现的。所以在使用REST风格访问资源时不会出现动词。
例如使用传统的方式查询一个用户User:
/rest/api/getUser?id=100
而使用REST风格查询一个用户:
GET /rest/api/user/100
什么是RPC
RPC是远程过程调用,它让我们在调用远程服务时就像是调用本地方法一样,通信协议大多采用二进制。
REST与RPC的区别
- REST使用HTTP通信,RPC一般使用TCP通信
- RPC在性能上REST要高很多,但是不能跨语言
- REST的灵活性更好,可以在不同语言之间进行调用
REST就像是说普通话,在全国都可以进行沟通。而RPC就像是一个团队里的专业术语,在团队内沟通更加高效,但是其他人不一定听得懂。
所以多系统之间内部可以采用RPC。而对外提供服务采用REST。
使用SpringMVC实现RESTful风格
在SpringMVC中可以使用**@RequestMapping注解的method字段来指定动作。
也可以直接使用@GetMapping**、@PostMapping、@PostMapping、@DeleteMapping来指定。
在绑定参数时使用**@PathVariable**注解来指定
例如:
@RequestMapping(value = "/user/{id}",method = {RequestMethod.GET})
public User getUserById(@PathVariable("id") Integer userId){
return userList.get(userId-1);
}