Web API两种风格RPC与REST的一些比较

一、定义

1.RPC(Remote Process Call)—— 远程过程调用

以“控制器/操作方法”的形式把服务器端的代码当成方法去调用。把HTTP当成传输数据的通道,不关心HTTP谓词。通过QueryString、请求报文体给服务器传递数据。例如:

/Persons/GetAll

/Persons/GetById?id=1

2.REST(Representational State Transfer)—— 表述性状态传递

按照符合HTTP语义的方法来使用HTTP协议。越符合以下几条,就越靠近REST风格。

1)URL用于资源的定位;

/user/888

/user/888/orders

2)根据HTTP谓词语义来设计接口:GET、POST(新增)、PUT(整体更新)、DELETE、PATCH(部分更新);

3)幂等性:如果某个操作调用一次与调用多次造成的结果是一样的,那就是幂等的。GET/DELETE/PUT是幂等的,POST不是,因为如果根据HTTP语义来使用,POST用于新增,每用一次将新增一条记录;

4)服务器端要通过状态码来反应资源获取结果。404、403(没有权限)、201(新增成功)。

二、优缺点

1.RPC:业务驱动,自然。

2.REST:

优点:

1)通过URL对资源定位,语义更清晰;

2)通过HTTP谓词表示不同的操作,接口自描述;

3)可以对GET/PUT/DELETE这些幂等操作进行重试;

4)可以用GET请求作缓存;

5)通过HTTP状态码反应服务器端的处理结果,统一错误处理机制;

6)网关等可以分析请求处理结果。

缺点:

1)真实系统资源复杂,很难清晰划分,对业务技术水平要求高;

2)不是所有操作都能简单的对应到确定的HTTP谓词操作;

3)系统的进化可能改变幂等性;

4)通过URL进行资源定位不符合中文用户习惯;

5)HTTP状态码个数有限;

6)有的客户端不支持PUT/DELETE请求。

三、使用选择

1.REST是学术化概念,不是使用要求,仅供参考。

2.根据公司情况,进行REST的选择和裁剪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值