2010-03-30 222 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

您不一定需要將答案視爲單獨的資源:您可以將答案視爲問題的一個要素。事實上,我認爲這會更好 - 一個答案除非與問題聯繫起來,否則並不值得。