在设计一个资源分享应用。设计RESTful API时,在设计层面有些蒙圈了。特地求教各位。
物联网设备通过设备云服务抽象成一个设备API。而我目前设计的Web APP则是通过与应用业务的整合,将设备API封装后,再次封发给第三方APP(比如其他合作平台)和移动APP。
DeviceAPI --> WebAPI -?-> Cloud|APK|APP
我现在有两种选择:
第一种来自Flask/Flask-RESTful的API设计,采用JSON格式。先采用API Key/Secret登陆,换取token,然后在后续访问中采用token来访问,也可以利用API Key/Secret继续访问。这是最常见的经典方式。典型的URL风格是:
http://host/api/version/resource/idx/
第二种来自Flask-appbuilder自带的资源驱动的REST API,采用JSON格式。但是其鉴权方式采用经典的username/password。换而言之,移动APP事实上是作为浏览器的替代物而存在的。唯一区别在于返回值采用JSON替代了XHTML。典型URL风格是:
http://host/resource/api/idx
有些怪异,是吧?但URI字段顺序并不是最重要的,我发现移动APP和第三方APP的需求是有差异的。
作为用户,使用移动APP列出自己名下的设备列表,并通过设备ID来访问特定设备的状态读取和指令下发。所以这种方式更加适合第二种方式。
作为合作方网站,需要访问的范围可能更加广,虽然不能够指令下发,但是读取特定设备的状态也涉及到隐私权。这个似乎更加适合第一种方式。
必须依赖设备ID访问特定设备,不同的用户,不同的第三方平台都需要单独的设备密钥。这两种方式是否可以整合?
这个问题比较宽泛,欢迎指教和讨论。
SMILET
相关分类