下面是一个来自 IBM developerWorks 的 API 样例,尝试请求该 API,你可以看到该集合很好的支持了结果的分页与排序。 同时我们从返回的信息中可以看到,每个文档 Entry 的 URI 都按照 / 社区库 /[ 社区库 ID]/ 文档 /[ 文档 ID] 的复合 URI 的模式设计的。
清单 2. IBM developerWorks 的某个社区文件库的集合资源的 API REST API 请求: GET https://www.ibm.com/developerworks/mydeveloperworks /files/form/anonymous/api/communitylibrary /0a7c97bb-6cf9-4ddb-a918-80994e7b444d/feed? pageSize=5&page=1&sK=modified&sO=dsc
REST API 请求,要求返回 XML 格式数据: GET https://www.ibm.com/developerworks/mydeveloperworks /files/form/anonymous/api/tags/feed?format=xml &scope=document&pageSize=30&sK=cloud&sO=dsc
REST API 请求,要求返回 JSON 格式数据: GET https://www.ibm.com/developerworks/mydeveloperworks /files/form/anonymous/api/tags/feed?format=json &scope=document&pageSize=30&sK=cloud&sO=dsc
下面是一个来自 IBM developerWorks 的 API 样例,尝试请求该 API, 你可以看到该 API 会在 HTTP 头中返回电子标签和缓存处理信息。
清单 4. IBM developerWorks 的带有电子标签的文件服务 API
REST API 请求: GET https://www.ibm.com/developerworks/mydeveloperworks /form/anonymous/api/communitylibrary /7e2e8015-bf72-43b6-bacd-36565b67febc/document /ddc0ef4e-224e-449c-bb2c-f919fafb17d2 /entry?acls=true&includeRecommendation=true &includeTags=false&includeLibraryInfo=true&format=xml
八、更好的使用数据冗余和链接元素 在 ATOM 文档中,我们用各种数据元素来传递信息。其中有一类元素叫做链接,可以用于开发者的进一步访问。 通常,我们会提供编辑当前资源的链接,访问当前资源的链接,等等。通过更加灵活的使用这类链接元素,以及提供必要的数据冗余, 我们可以大大简化开发者的编程逻辑,提高 REST API 的使用效率 。
1. 首先,让我们来看看数据冗余的例子: 我们在一个航班信息的文档中,通常会包括飞机的型号; 而我们可能经常需要在显示航班信息的时候,同时显示更多的飞机信息(如单通道还是双通道,载客人数等)。 这个时候,我们就需要对飞机型号的资源再发起一次请求,才能获得我们需要的信息。 如果我们可以在请求航班信息的时候,返回飞机型号的同时获得更多的该型号的信息,就可以减少一次网络连接。 为了保证 API 的灵活与效率,我们可以提供一个开关参数,如 includeAircraftDetail=true。
2. 其次,让我们来看看链接元素的例子: 我们要展示一个文件夹下面所有的文件,并允许用户察看每个文件都允许哪些人编辑,哪些人下载以及将某文件放入收藏夹。 这时候,我们可以考虑将这些可以执行的操作的 API 都用链接元素的方式返回给客户端, 这样,开发者无需自己拼接 API 调用的 URL,就可以使用,从而降低代码复杂度。