我正在构建一个RESTful Web服务.我已经阅读了为每个机制使用HTTP的原则,只要它会占用你,而且大多数时候,就像获取资源一样,它工作得很好.
但是当我需要发布某种新条目时,为了清晰和健壮,无论客户端做什么,我都想提供新条目可能失败的特定验证错误.此外,存在特定错误,例如,用于创建新用户的数据完全有效,但可以采用昵称或电子邮件地址.简单地返回409 Conflict没有详细说明昵称或电子邮件地址的详细信息.
所以解决这个问题不是火箭科学:记录一堆特定的错误代码并返回一个有错误的对象:
{ errors: [4, 8, 42] }
Run Code Online (Sandbox Code Playgroud)
这意味着在请求失败的情况下,我不会返回REST哲学所预期的资源或密钥.类似地,当我返回许多资源时,我必须以某种方式在数组中构造它们.
所以我的问题是:如果我为每个请求标准化一个信封,我是否仍然会提供一个表现良好的RESTful Web服务,例如,总有一个像这样的对象{ errors, isSuccessful, content }?
我之前已经构建了使用它的RPC风格的Web服务,但我不想做一些"几乎是REST"的东西.如果有任何关于REST的意义,我希望尽可能保持良好的行为.
如果答案是"地狱没有",我认为它可能是,我想知道它是否至少正确地解决了验证问题,并且对于这种问题解决可能是一个很好的参考,因为大多数指南我都是我发现只详细的简单案例.
所以,我想知道我将从RESTful uri GET请求中获得多少结果.我不知道有什么方法可以做到这一点.有没有办法做到这一点?由于REST只抛出属性,我不知道它是否能够计算其结果,但它可以跳过结果并获取结果的子集.
有人有什么建议吗?
哦,我的设置是一个LINQ to SQL,它填充了一个可查询的通用List.数据服务使该列表可用.我已经尝试了对列表的计数,但我总是得到数据库的最大行,这不是我正在寻找的.
计算表中的记录显然是一种手动操作,直到你们已经在工作中获得一些漂亮的新功能;)
但是,我甚至坚持使用.on('value',...)手动运行来获取计数:
var table = new Firebase('http://beta.firebase.com/user/tablename');
var count = 0;
table.on('child_added', function(snapshot) {
count++;
// how do I know if this is the last child? i.e. the count is complete?
});
// when is it okay to use count?
Run Code Online (Sandbox Code Playgroud)
我预见到任何类型的分页都会出现同样的问题,我觉得我对此有点束缚.我错过了什么?
这基本上是错误的模式,例如,获取用户在他/她的队列中的消息数量?