2013-01-10 116 views
0

在決定哪條路由更加RESTful時遇到了一些麻煩。爲了簡要介紹一下,我正在爲抽獎應用程序構建一個API。最高級別是客戶端,接下來是抽獎活動,以下是提交。REST API路由結構

我很困惑什麼路線最適合創建新的抽獎活動和提交。

選項1

POST /sweepstakes [passing along client_id as a parameter] 

選項2

POST /clients/:client_id/sweepstakes [using client id in route to create] 

這裏是我的所有路線的要點。希望有人能幫助我。 https://gist.github.com/4504221

+0

如果你不介意的話,我會說一段時間。 REST的主要部分(有些人可能會說是最重要的部分)是資源識別與其轉換的分離。這意味着無論你在做什麼(檢索,創建,更新,刪除或任何其他動作),URI都應該保持不變。一般操作類型應該由HTTP動詞表示(get,post,put delete等),並且具體應該在請求主體中傳遞(表單發佈數據)。 –

+0

首先你要問哪種路由風格更加RESTful。然後你問哪種路線風格最好。意識到這些不一定是一回事。另外,被認爲是「RESTful」的東西可能會成爲一個非常敏感的主觀主題。 –

+0

我不認爲@ mark-hildreth所說的RIN是一些敏感的政治或主觀意見的暗示是真實的,建設性的或有幫助的。 REST是爲構建更好的網絡應用程序體系結構而開發的理念。因此更加RESTful往往是更好的。 –

回答

1

我不打擾使REST URI代表分層結構。

/client/:client_id should return a list of the client's sweepstakes URIs (among other data.) 
/sweepstakes/:sweepstakes_id will return a list of all submissions URIs for that sweepstakes id (among other data.) 
/submission/:submission_id is exactly what you think. 

這很簡單,但我想不出讓URI更復雜的原因。讓我知道如果我失去了一些東西。

編輯:哦,你是指創建資源:

我還是上述的URI去。

POST /client/ 
POST /sweepstakes/ 
POST /submission/ 

傳遞請求主體中所需的數據並返回響應中的id。與PUT更新:

PUT /client/:client_id 

0

答案是幾乎關係到這將是資源的URI,您將創建:

  • POST /創建/:id
  • POST /sweepstakes/到創建/sweepstakes/:id
  • POST /clients/:id_a/sweepstakes/創建/clients/:id_a/sweepstakes/:id_b