Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 获取RESTful请求看到的返回计数_Entity Framework_Rest - Fatal编程技术网

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

Entity framework 获取RESTful请求看到的返回计数,entity-framework,rest,Entity Framework,Rest,所以,我想知道我将从RESTful uri GET请求中得到多少结果。我不知道有什么办法可以做到这一点。有办法吗?由于REST只是抛出属性,我不知道它是否能够计算结果,但它可以跳过结果并获取结果的子集 有人有什么建议吗 哦,我的设置是一个LINQtoSQL,它填充了一个可查询的通用列表。数据服务使该列表可用。我尝试在列表中获取一个计数,但我总是返回数据库的最大行数,这不是我想要的。为什么不让REST Web服务以JSON或XML的形式返回数据,其中可以有一个关于长度的属性。其他人可能会反对这个概

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

有人有什么建议吗


哦,我的设置是一个LINQtoSQL,它填充了一个可查询的通用列表。数据服务使该列表可用。我尝试在列表中获取一个计数,但我总是返回数据库的最大行数,这不是我想要的。

为什么不让REST Web服务以JSON或XML的形式返回数据,其中可以有一个关于长度的属性。

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

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

<?xml version="1.0" encoding="UTF-8"?>
<results>
  100000000 results go here.
</results>
但是,为了实现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
的超链接。请注意,此上下文中的超链接可以很简单,如:

<?xml version="1.0" encoding="UTF-8"?>
<results>
  <result>
    This is a result.
  </result>
  <result>
    This is also a result.
  </result>
  <link rel="next" href="/your/api?page=3&perpage=2" />
  <link rel="prev" href="/your/api?page=1&perpage=2" />
</results>

或者根据需要进行调整。

您应该能够在REST资源名称设计中考虑到这一点。您可以从以下内容开始:

GET /items?info
  • /widget/12345(widget 12345的表示)
  • /小部件(所有小部件资源名称的列表,即链接)
您可能会很快决定“/widgets”将是一个庞大的列表,并决定支持页面,比如

  • /widgets/page/43(可以有到第4200到4299个widgets的链接,以及诸如总页数或widgets计数之类的附加信息。)
在其他情况下,可以将大型集合细分为自然层次:

  • /小部件/桃花心木,/widgets/oak
  • /电影/戏剧,/电影/浪漫
  • /计算机/硬盘/希捷/computers/usbdrives/kingston
您还可以定义查询:

  • /小部件?maxprice=200和maxweight=4

为什么不让您的资源处理对该类型元数据的查询?假设

GET /items
返回项目列表,如下所示:

<items count="5" modified="2009-10-22">
  <item url="/items/first" name="First Item" />
  <item url="/items/second" name="Second Item" />
  ...
</items>
<items count="5" modified="2009-10-22" type="info" />
<info>
  <items count="5" modified="2009-10-22" url="/items" />
</info>
GET /info?items&users
可以返回如下所示的空列表:

<items count="5" modified="2009-10-22">
  <item url="/items/first" name="First Item" />
  <item url="/items/second" name="Second Item" />
  ...
</items>
<items count="5" modified="2009-10-22" type="info" />
<info>
  <items count="5" modified="2009-10-22" url="/items" />
</info>
GET /info?items&users
可能会返回:

<info>
  <items count="5" modified="2009-10-22" url="/items" />
  <users count="8" modified="2009-10-05" url="/users" />
</info>


我不知道你所说的“REST只是抛出属性”是什么意思。对不起,我的意思是它只是公开数据。它不像SOAP那样可以通过调用函数得到结果。诚然,在公开数据之前,您可以操作该数据并对其进行一定程度的更改,但这基本上就是我的意思。-1这个概念没有正确地考虑HTTP缓存。将两个资源组合到一个HTTP请求/响应中可以减少缓存命中的机会。如果自和上次修改后进行了修改,它还会阻止客户端有效地使用
。另外,
Last Modified
是将该信息返回给客户机的适当方式,通过HEAD请求执行此操作是完全合理的。如果您打开一个HTTP会话,并且资源是数千(或更多)字节而不是数百字节,那么批处理没有什么好处,因为会话本身就是一个批处理。我不太清楚您在这里说的是什么——您是说使用“GET/items”和“GET/items?info”会破坏缓存吗?如果是的话,那么用“GET/items/info”代替“info”查询是否更有意义?不,我是说在同一个响应中返回关于项目和用户的信息是不好的。将它们保存在单独的请求和响应中。@Bob Aman-除了集合中的项数不是元数据之外,它是集合资源本身的真实数据成员。而将部分资源数据作为HTTP头传递肯定不是一个好主意。@Franci哇,真的吗?因为它不是维基百科定义的类别之一,它不是元数据?来自同一篇维基百科文章:“元数据被松散地定义为关于数据的数据。”计数是关于集合中有多少数据项的数据。因此,需要元数据。不管怎样,这是一个相当愚蠢的论点。我不想一下子得到所有的结果。我正在尝试分批填充一个表,但我想知道完整结果集的总计数。当您发出初始请求时,您将返回第一批和一个总数,或者一个仍然剩余的数字。然后,您只需循环并获得下一批,直到您获得所有信息。但是,要么服务器端是有状态的,要么您对数据库进行额外的查询以每次获得有限数量的结果。如果返回排序后的数据,并且是在G上,但将以C开头的数据插入到数据库中,则无法显示新的更改。或者,只需按ID排序。您是说xml或json响应中已经嵌入了长度?那在哪里?它在页眉里吗?实际上,我正在使用.net创建RESTful输出,我看不到xml输出有任何计数。您将传回一个属性('NumberMaining'),这样每次传回数据时,这个数字都应该减少,但您只需将其放入,然后放入要传回的数据。500…嗯,看起来你的计数被集中到了一整套的结果中,对吗?因此,我的意思是,如果我只是从一整套中选择前10项,那么计数会是10项,我会得到这10项。我所追求的是一种获取所有项请求计数的方法,即使我想使用(page=,top=,next=,e)获取一小部分完整数据