Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest API设计;动作端点_Rest_Api_Http - Fatal编程技术网

Rest API设计;动作端点

Rest API设计;动作端点,rest,api,http,Rest,Api,Http,假设我有一个设备,它将连接到服务器并通过API注册/传输数据 我知道你会有这样的事情: GET: api/devices GET: api/devices/:id POST api/devices DELETE: api/devices/:id 这些是典型CRUD端点的示例 但是,我应该在哪里添加端点来检查该设备是否允许与其工厂ID连接 我一直在考虑以设备ID的形式传递一个带有API键的post字段,但这会弄乱HTTP谓词 因此,我认为最好的方法是添加如下参数: GET: api/device

假设我有一个设备,它将连接到服务器并通过API注册/传输数据

我知道你会有这样的事情:

GET: api/devices
GET: api/devices/:id
POST api/devices
DELETE: api/devices/:id
这些是典型CRUD端点的示例

但是,我应该在哪里添加端点来检查该设备是否允许与其工厂ID连接

我一直在考虑以设备ID的形式传递一个带有API键的post字段,但这会弄乱HTTP谓词

因此,我认为最好的方法是添加如下参数:

GET: api/devices/:id?id=something
但这对于这个端点来说是多余的


所以问题是,;如何成功识别自己的设备?

听起来您只是在寻找一种进行身份验证的方法。查看
授权
标题及其各种身份验证方案。如果现有的身份验证方案不适合您的需要,您还可以使用自己的身份验证方案进行扩展。常见的是
Basic
Digest
Bearer
。供应商扩展的一个例子是AWS

是的,本质上可以归结为这一点。我想我觉得这有点不同,因为我不是在寻找一个典型的API密钥/机密系统,因为我自己编写了客户端程序。但是谢谢,我要看看那些@NathanPrins即使你自己设计客户,你也可能会遇到其他人已经遇到过的类似模式;)对这些东西重新使用现有的标准可能也会给你带来额外的好处,比如必须编写更少的代码或依赖其他人的文档。是的,我知道这一点,这是程序员工作的一半哈哈。但在这种情况下,大多数API都要求您注册一个应用程序,您将收到一个密码,并使用appname和密码进行身份验证。但在这种情况下,我不希望人们必须注册他们自己的设备,但我希望设备持有“工厂”的某个密钥,这表明他们实际上是合法客户,而不是第三方。。“基本的、消化的等等都没有解决这个问题。还是我遗漏了什么?”内森普林斯。如果有一些“工厂密钥”,你可以很好地散列这个密钥,这样它就变得不可用了,你可以直接使用它作为承载令牌。使用承载令牌不需要完整的OAuth2流。这在@NathanPrins中是有意义的