2016-11-29 67 views
0

我正在嘗試組織我們正在構建的restfull api的端點。我至今是:Restfull API組織端點

GET - /api/members/list 

GET - /api/members/:member_id 
PUT - /api/members/:member_id 
DELETE - /api/members/:member_id 
POST - /api/members - add member 

POST - /api/member/forgot_password 
POST - /api/member/reset_password 
POST - /api/member/sign_up - this is same as - POST - /api/members - add member 
POST - /api/member/sign_in 
POST - /api/member/validate 

POST - /api/member/auth/twitter 
POST - /api/member/auth/gplus 
POST - /api/member/auth/facebook 

的事情是,我不知道

POST - /api/members/forgot_password 
OR 
POST - /api/member/forgot_password 

//For register a member to use post over resource 
POST - /api/members 
OR 
//To have endpoit for that 
POST - /api/member/sign_up 

所以我的理解有關問題的REST概念是在資源使用請求動詞。但是,如果我們有/api/members資源,並且我希望有一個用於登錄成員的端點,這將如何應用?

/api/members/sign_in/api/sign_in/api/member/sign_in

+0

您認爲「登錄」是指在RESTful API中嗎?你使用的是什麼認證模式? –

+0

就是這樣,我不認爲在一個RESTful'登錄'可以被視爲資源。如果我是正確的,它更像功能性的東西。不真正明白auth模式是什麼意思,我的登錄工作是這樣的:成員提供電子郵件和密碼,然後創建JWT。我會用Facebook登錄,也可以這樣工作:它需要一個有效的fb access_token,然後創建與登錄功能相同的JWT。 – Alex

回答

1

對我來說,使用單複數名詞是teaste的問題。

GET /api/members應合理返回成員的集合,同時得到一個是完全有意義的爲使用

GET /api/members/{id}

GET /api/member/{id}

因此,如果您對forgot_password資源的關注是關於複數或單數形式的,那麼沒有更好的方法。隨你便。

對於註冊會員,我發現更合適這個選項

POST /api/members

因爲你實際上是試圖建立一個新的member資源。

至於你最後的問題,再次是你如何成像sign_in資源的問題。 sign_inmembers的子資源是否有意義?在給出答案之前,請關注您所描述資源類型中的陷阱。你確定你是懷孕sign_in作爲東西而不是動作

在這種情況下,我認爲sign_in資源會更自然地置於不同的根。 但值得一提的是,在REST中登錄有點棘手。由於srever不允許保留任何會話,因此您必須注意請求必須進行身份驗證(通常通過令牌)。我不想脫離主題,也許你想在實現登錄機制之前閱讀this