我剛開始使用Apiary,我無法分辨這是產品的限制還是隻是我不理解要做什麼。Apiary的多種身份驗證方法
我正在記錄一個API,它將用戶認證爲每個請求的一部分。有時,身份驗證是路徑的一部分(對用戶配置文件的請求會在路徑中包含用戶標識),其他時間只是參數(?user_id = 1 & auth = secret),對於POST請求,部分入局身爲JSON。
此外,應用程序中有3種驗證方法。您可以使用Facebook UID,電子郵件地址或使用您正在使用的設備的唯一ID登錄。其結果是一些看起來像這樣:
##User [/user/{facebook_uid}{?access_token}, /user/{email}{?device_id}, /users/{device_auth_id}{?device_id}]
這工作得很好,並顯示在API中爲我期望:
但這導致2個問題:
1)如果我想添加所有認證方法共享的一組參數,我需要將它添加到全部3中,如下所示:
## User [/user/{facebook_uid}{?access_token, extra_thing, this_too},
/user/{email}{?device_id, extra_thing, this_too},
/users/{device_auth_id}{?device_id, extra_thing, this_too}]
這似乎有點凌亂,它會是好得多的路徑數組的結尾應用共享的參數,使它們適用於所有,這樣的事情:
## User [/user/{facebook_uid}{?access_token}, /user/{email}{?device_id}, /users/{device_auth_id}{?device_id}]{&extra_thing, this_too}
但是,這是行不通的。有沒有辦法做到這一點?這些文檔對於像這樣更復雜的東西並不是很有用。
另外,有沒有辦法創建某種模板,我可以適用於我所有的方法?在身份驗證是路徑的一部分的情況下,它有點不可避免,但對於其他請求,只需執行諸如include: authentication
之類的操作並讓它從某個定義的模板中抽取unique_id/auth組合即可。
謝謝!
我明白了,這很有道理。根據您所說的參數獲得不同的資源會很奇怪,因此我認爲您在底部提供的示例是現在就開始實施的最佳方式。我不認爲我們是唯一擁有多個指向相同資源的URI,如果他們將來支持(不會像您所說的那樣破壞服務器),那將會很好。 – JMRboosties
那麼你可以使用[資源模型](https://github.com/apiaryio/api-blueprint/blob/master/examples/8.%20Resource%20Model.md),但它與使用情況略有不同你所描述的(一個模型在那裏,而你實際上有一些稍微不同的模型)。 – Almad