我前段時間開發了一個用於授權我們的軟件的網絡應用程序。這有客戶,帳戶,用戶和許可證。許可證分配給用戶並通過序列號激活。許可證是作爲處理採購訂單的輸出而創建的,即沒有任何直接發佈新許可證的方式。用於變異實體的RESTful URL
我在閱讀「REST風格的Web服務」,並考慮如何使它成爲RESTful(HATEOAS)。
大部分網址我都很清楚,但在許可證上有一些有趣的操作。許可證的基本URL將是/licence/{licenceID}
。
- 分配可用許可的用戶(通過支持員工完成)
- 從用戶釋放許可證(把它放回可用許可證池)
- 激活許可證流水號,在返回
- 生成的密鑰激活許可證
- 續訂許可證到一個新的到期日
- 禁用許可證:僅單向,不可逆式。許可證仍然存在
現在,在REST中,我只能使用標準方法並且不能在URL中嵌入一個動作,說「assign」。我在想的是挑選我想要影響的許可證的部分。這給: -
- 列表:
GET /licences/
- 得到:
GET /licences/{licenceID}
- 分配:
POST /licences/{licenceID}/assignee/{userID}
- 發佈:
DELETE /licences/{licenceID}/assignee
- 激活:
POST /licences/{licenceID}/serialNumber/{serialNumber}
- 停用:
DELETE /licences/{licenceID}/serialNumber
- 續約:
POST /licences/{licenceID}/expires
- 禁用:
DELETE /licences/{licenceID}/enabled
我的問題是: -
- 這是URL方案做的 「正確」 或明智的良好做法呢?
- 或者我應該有「許可證分配」和「許可證激活」的集合(例如:
/assignments/{licenceId}/{userId}
)
- 或者我應該有「許可證分配」和「許可證激活」的集合(例如:
- 我失去了一些基本的東西(也許清楚當我讀完這本書)
- 參數(userId和serialNumber)應該作爲路徑參數還是查詢參數?
- {用戶id}指的是系統上的用戶,這樣可以從它自己的信息(無序列號的DB中心)的路徑參數
- {SERIALNUMBER}在客戶(的Java Swing)產生。
非常感謝!