假設這是一個簡單的API,您應該能夠在SSL(https)下使用Basic Auth
。在這個方案下,你可以通過標題中的每個請求傳遞用戶的憑證。這使您可以隨時訪問用於過濾數據的用戶名。如果這是家庭作業,你可能只是說「而且我會在現實世界中使用SSL」 - 請問你的老師。
就URI設計而言,從您的問題中很難理解這些路徑段應該表示什麼,但是您可能希望避免看起來像動詞的任何內容(例如getitem)。考慮支持這些調用:
GET /items/{itemId}
// returns details on a specific item
GET /items?userId={userId}&budgetId={budgetId}
// returns a list of all items matching the query parameters
// may return just ids, limited detail, or as much detail as GET /items/{itemId}
這不是真的清楚什麼planFact
和inOut
應該是。如果month
要指定特定月份的項目,那麼也應該是查詢參數。
如果你的URI不包含那麼多的路徑段,那麼每個人都會很高興。