我想设计一个RESTful API,以便通过Web界面控制蓝牙适配器。
如果我发生以下冲突会怎样?
POST /IDofDongle/
让我们说我希望这个特定的USB加密狗能够启动发现/查询过程(将有关周围蓝牙设备的信息附加到资源)或连接到任何蓝牙设备(通过附加MAC创建新的从属资源)蓝牙设备到上面的URI的地址)?
使用QueryString区分对我来说似乎非常像RPC。 或者我是否需要定义其他资源?
答案 0 :(得分:1)
你遇到了REST谬误。并非所有东西都是资源,所以你不应该试图对待所有东西。通过POSTint到该端点,您说要创建USB加密狗。由于您没有访问3D打印机,这将无法正常工作。您正在构建RPC服务。
所以打破REST并介绍你自己的动词:
POST /IDofDongle/Discover
POST /IDofDongle/Connect
当然,您可以将“发现”和“联系”视为资源:
POST /IDofDongle/Discoveries
POST /IDofDongle/Connections
“创建”这些实体。然后,您可以返回与指定加密狗相关的发现或连接实体,并保留此类实体的相关属性(DiscoveredDevices,ConnectionID,...)。