2013-04-09 101 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的條目給你一個隨機測驗,那麼終端消費者可以使用它。