我在使用HATEOAS的節點中寫入REST api。用戶必須擁有一個帳戶才能訪問其中的大部分內容。創建用戶帳戶時更正HATEOAS響應
他們註冊一個包含登錄詳細信息的帳戶,然後登錄以獲取訪問令牌,然後使用該令牌訪問任何不是register
或login
的端點。
向根發出get
響應帶有可用操作的目錄。
問:來自register
的正確答案是什麼,告訴客戶接下來可以做什麼(即登錄)?
register
技術上創建服務器所以201 CREATED
和Location
頭似乎appopriate上一個新的資源。但login
引用不是新創建的資源的位置。我應該用
Location
指向返回201 Created
到新創建的用戶(例如/myaccount
或/users/{id}
,然後在響應中包含主體中的登錄鏈接?
{ _links: { self: { href: "what goes here?" }, x:login: { href: "/login" } } }
- 我是否根本不告訴客戶端,並要求他們在應用程序根目錄上執行
get
以獲取可用端點列表,其中應該包括login
,假設客戶端必須首先執行此操作得到register
鏈接它應該已經有login
。
期待客戶已經擁有登錄鏈接的感覺不舒服,因爲它依賴於客戶以前的活動假設。
要求客戶端在註冊後向根目錄發出另一個請求似乎意味着低效和不必要。如果客戶剛剛創建了一個資源,那麼服務器應該用它接下來的工作做出迴應似乎是公平的。