01Rest Api的概念REST APIRepresentational 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?templateId719过滤数据$filter现在加上过滤$filtercompEntryId eq 10959我们发现数据变成只有一条所以这个过滤条件是Odata是一样的。过滤数据$select因为返回的是Json对象所以有很多字段我们并不需要那么多字段这样能减少网络的开销所以我们用$select选取我们需要的字段,所以这个的逻辑和odata的逻辑逻辑其实也是一样的。关联$expand我们看上图有个节点是salary它是一个嵌套节点下面包含很多子字段注意这个时候的语法就和odata和传统的Rest语法不一样SuccessFactros的Rest有独特的语法$expandhttps://apipreview.sapsf.eu/rest/rewards/compensation/v1/employeeCompensations?templateId719$filtercompEntryId eq 10959$selectsalary$expandsalary($selectcustomFields/customField1)这个我们要拆出来看①https://apipreview.sapsf.eu/rest/rewards/compensation/v1/employeeCompensations?templateId719$filtercompEntryId eq 10959②$selectsalary③$expandsalary($selectcustomFields/customField1)第一层很好理解就是过滤条件第二层也好理解就是取到带有子节点的集合数据第三层意思是$expandsalary是需要找到salary的子节点数据$selectcustomFields说明customFields是salary的子节点customFields/customField1说明customFields也是一个带有子节点的集合我取这个集合里面的customField1的数据所以如果是嵌套的结构我们用$expand、$select、和原生的/来取嵌套的数据结构里面的字段。分页方式:$top (限制数量) $skip(跳过数量)