我正在使用ember-data構建一個EmberJS應用程序。如何用REST api實現複雜的查詢?
我的應用程序中的一些功能需要非常複雜的查詢。
舉個例子,假設我有三個實體 - 學生,老師和班級。如果我想要列出所有1993年以前出生的正在接受老師X教授的課程的學生,我該如何使用RESTful api來做到這一點?在普通的SQL中它很容易,但我不確定將這個實現到我的API中的最佳實踐。
我是否需要與我的基本REST api一起構建自定義端點?
所以我仍然有:
GET /students (which returns all the students)
GET /students/{id} (which returns a specific student)
etc
但然後實現我的「定製」的查詢如下:
GET /students/custom/born_before/{date}/taught_by/{teacher_id}
還是有這樣做的更規範的方式?
我不喜歡用POST來「獲取」信息,在我看來這不是RESTful。 –
我更新了我的答案,以說明在某些情況下您爲什麼要發佈帖子。實質上,您正在發佈服務器運行的搜索對象,然後稍後再獲取結果。就像您將映像發佈到服務器並稍後檢索它一樣。 – taylonr
那會更像'/ students/filters' - 因爲有很多。無論如何,這不是一般用例的最佳解決方案。不得不提出兩個請求來進行簡單的搜索並將其存儲在後端上,這沒什麼意義。 –