Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Openapi 设计API来控制设备:每个设置都是端点吗?_Openapi_Api Design_Endpoint_Restapi - Fatal编程技术网

Openapi 设计API来控制设备:每个设置都是端点吗?

Openapi 设计API来控制设备:每个设置都是端点吗?,openapi,api-design,endpoint,restapi,Openapi,Api Design,Endpoint,Restapi,寻找有关设备控制API设计的建议。我正在使用OpenAPI为硬件设备创建RESTAPI。大多数示例和“最佳实践”建议都涉及CRUD应用程序,但事实并非如此 应用程序将使用此API从设备检索状态,并允许用户控制单个函数。我想知道如何传达哪些设置是用户可修改的,以及如何提供对它们的访问。这是在计算机和设备之间具有直接网络连接的专用网络上;该设备将运行HTTP服务器和一些后端框架来处理查询 假设这个设备是一个摄像头。您可以设计如下所示的“摄影机”对象模式: shutterSpeed available

寻找有关设备控制API设计的建议。我正在使用OpenAPI为硬件设备创建RESTAPI。大多数示例和“最佳实践”建议都涉及CRUD应用程序,但事实并非如此

应用程序将使用此API从设备检索状态,并允许用户控制单个函数。我想知道如何传达哪些设置是用户可修改的,以及如何提供对它们的访问。这是在计算机和设备之间具有直接网络连接的专用网络上;该设备将运行HTTP服务器和一些后端框架来处理查询

假设这个设备是一个摄像头。您可以设计如下所示的“摄影机”对象模式:

shutterSpeed
availableShutterSpeeds
FStop
availableFStops
focusDistance
focusDistanceMin
focusDistanceMax
假设您有一个端点设备/摄像机,一个GET-on返回上面的结构。那么,让API用户设置F-stop的最佳实践是什么?设备/摄像机/fstop的一个端点,他们可以向其输入值?他们是使用查询参数,还是在正文中使用有效负载

如果允许放置整个相机结构,用户可能会尝试设置只读值(如可用的F-stops列表)以及可设置值;然后你必须在回应中传达这个部分错误的条件。这充其量也显得笨拙

我可以在摄像机端点上有一个GET或PUT函数,它采用类似设置名称的内容,但是处理它的后端函数变成了一大串IF语句,API不是自描述的

所以我计划返回上面的相机结构,以及一组端点链接,允许访问每个可修改的设置。因此,响应将包括上述结构,以及以下链接:

device/camera/shutterSpeed
device/camera/FStop
device/camera/focusDistance
API客户机可以对这些对象执行新值的GET或PUT操作。我认为GET是最好的,并为新值提供了一个查询参数;这将允许基本浏览器设置值

这是合理的,还是有一些更优雅的惯例被普遍使用