2017-10-09 50 views
1

比方說,我有一個設備將連接到服務器,並通過API註冊/傳輸數據。API設計;行動端點

據我所知,你會喜歡的東西:

GET: api/devices 
GET: api/devices/:id 
POST api/devices 
DELETE: api/devices/:id 

這些都是典型的CRUD端點的例子。

但是我在哪裏添加端點以檢查這個設備是否被允許連接到它的工廠ID?

我正在考慮總是以設備ID的形式傳遞一個API密鑰的帖子字段,但這會混淆HTTP動詞。

因此,我認爲最好的辦法是增加一個參數是這樣的:

GET: api/devices/:id?id=something 

但是,這將成爲多餘的與此終結點。

所以問題是,我將如何成功識別我自己的設備?

回答

1

這聽起來像你只是在尋找一種方法來進行身份驗證。看一下Authorization標題和它的各種認證方案。如果現有的身份驗證方案不符合您的需求,您還可以使用自己的身份驗證方案進行擴展常見的有Basic,DigestBearer。供應商擴展的示例是AWS

+0

是的,基本上可以歸結爲此。我想我覺得它有點不同,因爲我沒有在尋找典型的API密鑰/祕密系統,因爲我自己對客戶端進行編程。但是,謝謝,我會看看那些! –

+1

@NathanPrins即使你自己設計客戶,他們可能會遇到類似的模式,而其他人已經遇到過;)爲這些東西重新使用現有的標準可能會給你帶來更多好處,例如因爲必須編寫更少的代碼或依賴別人的文檔。 – Evert

+0

是的,我認識到這一點,那是程序員工作的一半哈哈。但在這種情況下,大多數API要求你註冊一個應用程序,你會收到一個祕密,你使用的應用程序名和密碼進行身份驗證。但在這種情況下,我不希望人們必須註冊他們自己的設備,但我希望這些設備從「工廠」中持有某個密鑰,這表明他們實際上是合法的客戶,而不是第三方。這不是固定與基本,摘要等還是我錯過了什麼? –