2017-10-09 41 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要求你注册一个应用程序,你会收到一个秘密,你使用的应用程序名和密码进行身份验证。但在这种情况下,我不希望人们必须注册他们自己的设备,但我希望这些设备从“工厂”中持有某个密钥,这表明他们实际上是合法的客户,而不是第三方。这不是固定与基本,摘要等还是我错过了什么? –