01Rest Api的概念
REST API(Representational State Transfer API,表述性状态传递应用程序接口)是一种遵循REST 架构风格的 Web API 设计规范。它利用 HTTP 协议的特性,将服务器上的数据或功能抽象为“资源”,并通过标准的 HTTP 方法(GET、POST、PUT、DELETE 等)对这些资源进行操作。
1.1 核心约束
简单记忆:REST API 就是把数据当成“资源”,用 HTTP 动词 + URL 来操作它们,每次请求独立,数据格式多为 JSON。
GET:获取资源(安全、幂等)POST:创建新资源PUT/PATCH:完整或部分更新资源DELETE:删除资源
资源与 URI
每个资源(如用户、文章、订单)都有唯一的地址(URI)。
例如:/users/123表示 ID 为 123 的用户。HTTP 方法表达操作意图
无状态
服务器不保存客户端上下文,每个请求必须包含所有必要信息(如认证 token、请求参数)。这使系统易于水平扩展。统一接口
使用固定的媒体类型(通常是 JSON 或 XML)返回资源表现,客户端通过超链接发现后续操作。可缓存
HTTP 缓存机制可被合理利用,提升性能。
02实际案例
查询参数:$filter、$select、$expand
没有加查询参数的时候,数据是获取到4条数据https://apipreview.sapsf.eu/rest/rewards/compensation/v1/employeeCompensations?templateId=719
过滤数据:$filter
现在加上过滤&$filter=compEntryId eq 10959,我们发现数据变成只有一条,所以这个过滤条件是Odata是一样的。
过滤数据:$select
因为返回的是Json对象,所以有很多字段,我们并不需要那么多字段,这样能减少网络的开销,所以我们用$select选取我们需要的字段,所以这个的逻辑和odata的逻辑逻辑其实也是一样的。
关联:$expand
我们看上图有个节点是salary,它是一个嵌套节点,下面包含很多子字段,注意:这个时候的语法就和odata和传统的Rest语法不一样,SuccessFactros的Rest有独特的语法,$expand
https://apipreview.sapsf.eu/rest/rewards/compensation/v1/employeeCompensations?templateId=719&$filter=compEntryId eq 10959&$select=salary&$expand=salary($select=customFields/customField1)
这个我们要拆出来看:①https://apipreview.sapsf.eu/rest/rewards/compensation/v1/employeeCompensations?templateId=719&
$filter=compEntryId eq 10959
②$select=salary
③$expand=salary($select=customFields/customField1)
第一层很好理解,就是过滤条件;
第二层也好理解,就是取到带有子节点的集合数据;
第三层意思是,$expand=salary是需要找到salary的子节点数据,$select=customFields说明customFields是salary的子节点,customFields/customField1说明customFields也是一个带有子节点的集合,我取这个集合里面的customField1的数据
所以如果是嵌套的结构,我们用$expand、$select、和原生的/来取嵌套的数据结构里面的字段。
分页方式:$top (限制数量) +$skip(跳过数量)