2012-12-16 35 views
1

我需要开发一个REST API,并且对URI设计有所怀疑。REST API URI设计

场景:

1 - 我正在开发一个REST接口,一组服务。

2 - 每个服务从逻辑角度分几个部分(不是资源)。

3 - 每个资源可以通过两种方式 “A” 和 “B”

什么是最合适的URI的设计来访问:

/服务1/part1的/资源{A | B }

/服务1,第一部分,资源{A |?B}

回答

0

虽然无论是URL结构会的工作,你上市/服务1/part1的/资源的选择的{A |?B}是更为典型,并有与普通REST一起工作的最高机会API消费工具,被开发人员直观地理解等。正斜杠的含义实际上是在URI标准(我认为是RFC 1630)中定义的,相对URI只能用于正斜杠。

+0

当使用GET/service1/part1/resource?{A | B}这意味着GET/service1应该返回一个服务列表?情况并非如此。因此,我应该使用/ service1/part1/resource?{A | B}还是/ service1,part1,资源?{A | B} – JSV

0

这一个是更好:

/service1/part1/resource?{A|B} 

,因为它强调的层次结构(感谢斜线)。另外“访问资源的方式”通常使用HTTP动词(例如GET,POST,PUT,DELETE,HEAD等)发音。如果这就是你所说的“方式”,你应该坚持使用HTTP动词。

+0

但是service1/part1不是一个层次结构。我读过“将标点符号放在路径变量中以避免暗示层次结构 不存在:/ parent/child1; child2”因此,如果part1不是service1的子项。 Service1分为几个部分,URI应该是/ service1,part1,资源?{A | B}? – JSV

+0

@JSV:对此的任何来源(我询问“_Put标点字符在路径变量中以避免暗示层次结构不存在:/ parent/child1; child2_”)?另请注意,分号不是**,与逗号相同 - 分号仅用于特殊的,依赖于模式的用途,例如。从_pa​​th_(http://tools.ietf.org/html/rfc2396.html)中分离_param_ - 而不是_query_ - 。 – Tadeck

+0

@JSV:这也不需要模仿服务器体系结构,它只是_should_表示REST API中的逻辑结构,所以即使你在服务器上没有这样的结构,最好也是这样,显示出来资源的逻辑分组。 – Tadeck