素材牛VIP会员
资源分享WebAPP的API应该如何设计?
 熊***子  分类:Python  人气:820  回帖:1  发布于6年前 收藏

在设计一个资源分享应用。设计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访问特定设备,不同的用户,不同的第三方平台都需要单独的设备密钥。这两种方式是否可以整合?

这个问题比较宽泛,欢迎指教和讨论。

 标签:flaskpython

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv5 码农
转***鬼 职业无 6年前#1

我对你具体业务这一块不是很了解啊。不过看你上面的问题,url是怎么样的并不是那么重要,restful其实除了json,还有xml,form,url query等多种方式,flask-restful都是支持的。剩下主要问题就是鉴权方式,原理都差不多,无非是传输或存放的地方不一样,可以是:session,cookie,url params,http header等等。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取