当前位置:  开发笔记 > 编程语言 > 正文

获取RESTful请求所看到的返回计数

如何解决《获取RESTful请求所看到的返回计数》经验,为你挑选了1个好方法。

所以,我想知道我将从RESTful uri GET请求中获得多少结果.我不知道有什么方法可以做到这一点.有没有办法做到这一点?由于REST只抛出属性,我不知道它是否能够计算其结果,但它可以跳过结果并获取结果的子集.

有人有什么建议吗?

哦,我的设置是一个LINQ to SQL,它填充了一个可查询的通用List.数据服务使该列表可用.我已经尝试了对列表的计数,但我总是得到数据库的最大行,这不是我正在寻找的.



1> Bob Aman..:

其他人可能会反对这个概念,但这对我来说似乎是合理的:

HEAD /your/api HTTP/1.1

HTTP/1.1 200 OK
Date: Fri, 23 Oct 2009 00:58:17 GMT
Content-Type: application/xml; charset=UTF-8
Content-Length: 89
X-Result-Count: 100000000

然后:

GET /your/api HTTP/1.1

HTTP/1.1 200 OK
Date: Fri, 23 Oct 2009 00:58:17 GMT
Content-Type: application/xml; charset=UTF-8
Content-Length: 89
X-Result-Count: 100000000



  100000000 results go here.

注意:此处使用HEAD请求来获取计数,而无需提取完整数据集.HEAD请求仅检索HTTP标头,而不是检索响应的主体.

这将是我能想到的最RESTful方式,表明在通过网络发送之前你会得到多少结果.主要技巧是为它提供最好的标题名称. X-Result-Count是不错的,但如果你能找到现有的艺术并重新使用他们的标题名称选择,那就更好了(只要他们没有说出真正愚蠢的东西).也就是说,我不指望你会有太多的运气,所以你应该坚持下去X-Result-Count.

另外,我认为你可能误解了"REST"实际上需要什么.没有理由你不能通过范围给出表示.例如:

GET /your/api?page=1&perpage=10 HTTP/1.1

HTTP/1.1 200 OK
Date: Fri, 23 Oct 2009 00:58:17 GMT
Content-Type: application/xml; charset=UTF-8
Content-Length: 101
X-Result-Count: 10



  First 10 results of 100000000 go here.

但是,要成为RESTful,您需要能够通过/your/api?range=0-9/your/api?page=1&perpage=10不使用带外信息告诉客户端所识别的表示.例如,如果您的/your/api页面返回的结果太多,请执行临时重定向/your/api?page=1&perpage=10,并包含指向的超链接/your/api?page=2&perpage=10.请注意,此上下文中的超链接可能是这样的简单:



  
    This is a result.
  
  
    This is also a result.
  
  
  

现在,用于导航API调用结果的信息是带内实际的RESTful.

从本质上讲,REST是一种简单的HTTP,其缓存是正确的,并且通常可以使用合理的URI进行测量.它也是"超文本作为应用程序状态的引擎"(即资源应链接到其他资源).它不是一种协议,它是一种建筑风格.任何以不同方式告诉你的人都最好被命名为Roy Fielding.

http://roy.gbiv.com/untangled/2009/it-is-okay-to-use-post

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-718

附加物:

如果要指示总计数与页数,可以像这样定义标题:

X-Result-Count: 0-9/100000000

或根据需要进行调整.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有