2010-03-30 74 views
3

这是我目前正在研究的一个玩具项目。RESTful问题/答案设计?

我的应用程序包含多个选择答案的问题。

问题的URL是以下格式,与GET & POST映射到问题控制器上的不同动作。

GET: url.com/questions/:category/:difficulty  => 'ask' 
POST: url.com/questions/:category/:difficulty  => 'answer' 

我想知道是否值得重新设计成REST风格。我知道我需要将答案作为资源引入,但我正在努力想出一个对于回答这个问题来说很自然的网址。

重新设计是否值得?你将如何去构建网址?

回答

3

我认为这将是更好,如果你映射:

POST url.com/:category/:difficulty/questions => ask question 
GET url.com/questions      => list all questions 
GET url.com/:category/:difficulty/questions => list questions for category and difficulty 
GET url.com/questions/:id     => show question 
POST url.com/questions/:id     => add answer 
PUT url.com/questions/:id     => edit question 
PUT url.com/questions/:question_id/:id  => edit answer with id :id 
GET url.com/questions/:question_id/:id  => show question with highlighted answer (like it is here on SO) 

如果你这样做:

POST: url.com/questions/:category/:difficulty  => 'answer' 

然后,你可以只有一个与指定的类别和难度的问题。

+1

+1。将slug作为ID,而不是某种暴露应用内部结构的ID会很好。 – 2010-03-30 12:16:23

2

您不一定需要将答案视为单独的资源:您可以将答案视为问题的一个要素。事实上,我认为这会更好 - 一个答案除非与问题联系起来,否则并不值得。