2013-04-09 103 views
0

我读过这本电子书,我读过你应该尝试限制自己的两个基本网址。 所以如果你有一个测验资源,你将有/quizes/quizes/{id}。然后你使用HTTP动词进行操作。然而,当你试图遵循这种模式时,你将如何从服务器上获得一个随机问题的测验?宁静网络服务的网址

我以/quizes?type=random为例,但假设您希望type属性为可选,默认为随机,并且您已使用/quizes路径列出所有已保存的测验。

创建一个/quizes/generate?type=random路径并不遵循这些建议,也不认为生成的术语适合于,因为它是一个动词。

这些路径如/quizes“保留”返回集合(我知道REST不是规范),还是使用/quizes生成测验服务器端并返回它是完全合法的?

http://apigee.com/about/content/web-api-design

+0

这是REST上的一个合法问题。它为什么被关闭? – 2013-04-09 20:01:31

+0

@VivinPaliath最佳实践问题通常过于主观。但是,不确定这一点。 – 2013-04-09 20:20:56

+0

@JanDvorak这似乎不是一个最佳实践问题,而是一个关于如何以REST方式实现这个问题的问题。 – 2013-04-09 21:52:55

回答

1

应该做什么/quizzes为您提供的URL,让您可以访问不同的测验清单,让我们假设你已经定义的媒体类型/quizzes回报是JSON像这样(可能是特定类型像application/json+quiz):

{ 
    quizzes = [ 
     { description: "Quiz 1", url: "/quizzes/1" }, 
     { description: "Quiz 2", url: "/quizzes/2" } 
    ] 
} 

那么,你可以拥有的,可以让你访问一个随机测验的条目,可以是这样的:

{ 
    quizzes = [ 
     { description: "Quiz 1", url: "/quizzes/1" }, 
     { description: "Quiz 2", url: "/quizzes/2" }, 
     { description: "Random", url: "/quizzes/random" }, 
    ] 
} 

这个想法是有一个REST端点,所有后续的URL都是通过语义媒体类型发现的。所以如果你的媒体类型指定将会有一个描述为Random的条目给你一个随机测验,那么终端消费者可以使用它。