我建立一个REST web服务,当然做了一些研究,但仍留有一些未解答的问题。我的服务将仅针对初学者返回JSON。参数等在我的REST服务
1.I已经从使用id = 54354用户获取姓名和年龄结算使用queryparameters我GET,像
/api/users/54354/?fields=name,age
。 似乎有什么正在接受的大讨论,但这似乎是一个平常的方式。对于我的POST,PUT I当然要使用它的参数。如果你认为这种解决方式不同,你认为这种做法有什么看法,请争辩。
2: 当使用GET(或POST和PUT对于这个问题)你会如何指定与运营商查询,如"lastname starts with 'Pe'"
或"Age between 10 and 20"?
林考虑它是否将是有意义的把完整的查询在某种类型的对象。例如。
api/users/?filter={'name':{'startsWith':'Pe'},'Age':{'Min':10},'Age':{'Max:'20}}
这种JSON的语法适用于queryies,但林不知道是否有另一种“最佳实践”计算策略这个的。以上将需要服务中的解析器/验证器来验证有效的过滤器等。
3:最后一件事情是如何将AND和OR操作应用到它。 我想它也可以在JSON对象中工作。
一些希望你们可以给这个问题上的一些反馈:)
感谢您的回答。它是有道理的,但是如果我想要AND或或者不同的字段,如:startWithName = pe,foo,bar&age = 10-20,33,40-50。 &用于查询字符串以分开。解决方案是将保留关键字和+定义为OR和,例如;因为它是&查询=(startName:pe,foo,bar +年龄:20-30);性别:男性 – sunebrodersen 2012-01-30 20:31:35
'&'不是单纯的分隔符,它是你的AND。您必须在布尔表达式(表达式计算为true或false)中进行思考:field = value是一个表达式,(expr + expr)是一个OR表达式,(expr&expr)是一个AND表达式。括号可以让你像想要的那样复杂,例如'API /用户?(nameStartsWith = PE&年龄= 20)+(染发=黑色,绿色+自行车=真)。所以你不需要''''或':'。 – mtsz 2012-01-30 20:38:30
感谢您的澄清。我认为,只要是我不能控制客户的部分使用,我就会随着这种进步而前进。 – sunebrodersen 2012-01-31 08:34:50