2012-01-20 127 views
0

我正在创建一个REST API。可以说我服务的资源被称为object,它包含许多属性。REST API参数优先

除了要求整个组对象的这样

GET api.example.com/objects

我想允许通过提供请求单个对象要么objectidobjectname, 这样

GET api.example.com/objects?objectid=
GET api.example.com/objects?objectname=

我很困惑的是,我应该如何处理这样的请求?

GET api.example.com/objects?objectid=x&objectname=y

在这种情况下,我应该返回一个400 Bad Request,还是应该的参数之一优先于其他? REST如何定义这种行为?

回答

3

REST通常假定有一个资源的唯一URL,所以这将是:

GET api.example.com/objects/objectId 

参数通常用于搜索,所以你会碰到这样的:

GET api.example.com/objects?objectName=x 
+0

如果有多个搜索参数,它们是否被认为是AND或OR? – xbonez

+1

我不知道什么REST建议是,但我通常使用AND为不同的参数和OR为单参数的列表参数,所以type = 2,3和parent = 10将代表(parent = 10 AND(type = 2 OR类型= 3) – xpapad

1

一更好的方法是使用参数字符串中的通用键来检索特定资源的字段值

GET api.example.com/objects/objectId?field=objectName,anotherField 

它补充了xpapad的建议,并且可以添加可扩展的结构,以便如何为API设计定义一致的方法。