在設(shè)計(jì)一個(gè)資源分享應(yīng)用。設(shè)計(jì)RESTful API時(shí),在設(shè)計(jì)層面有些蒙圈了。特地求教各位。物聯(lián)網(wǎng)設(shè)備通過(guò)設(shè)備云服務(wù)抽象成一個(gè)設(shè)備API。而我目前設(shè)計(jì)的Web APP則是通過(guò)與應(yīng)用業(yè)務(wù)的整合,將設(shè)備API封裝后,再次封發(fā)給第三方APP(比如其他合作平臺(tái))和移動(dòng)APP。DeviceAPI --> WebAPI -?-> Cloud|APK|APP我現(xiàn)在有兩種選擇:第一種來(lái)自Flask/Flask-RESTful的API設(shè)計(jì),采用JSON格式。先采用API Key/Secret登陸,換取token,然后在后續(xù)訪問(wèn)中采用token來(lái)訪問(wèn),也可以利用API Key/Secret繼續(xù)訪問(wèn)。這是最常見的經(jīng)典方式。典型的URL風(fēng)格是:http://host/api/version/resource/idx/第二種來(lái)自Flask-appbuilder自帶的資源驅(qū)動(dòng)的REST API,采用JSON格式。但是其鑒權(quán)方式采用經(jīng)典的username/password。換而言之,移動(dòng)APP事實(shí)上是作為瀏覽器的替代物而存在的。唯一區(qū)別在于返回值采用JSON替代了XHTML。典型URL風(fēng)格是:http://host/resource/api/idx有些怪異,是吧?但URI字段順序并不是最重要的,我發(fā)現(xiàn)移動(dòng)APP和第三方APP的需求是有差異的。作為用戶,使用移動(dòng)APP列出自己名下的設(shè)備列表,并通過(guò)設(shè)備ID來(lái)訪問(wèn)特定設(shè)備的狀態(tài)讀取和指令下發(fā)。所以這種方式更加適合第二種方式。作為合作方網(wǎng)站,需要訪問(wèn)的范圍可能更加廣,雖然不能夠指令下發(fā),但是讀取特定設(shè)備的狀態(tài)也涉及到隱私權(quán)。這個(gè)似乎更加適合第一種方式。必須依賴設(shè)備ID訪問(wèn)特定設(shè)備,不同的用戶,不同的第三方平臺(tái)都需要單獨(dú)的設(shè)備密鑰。這兩種方式是否可以整合?這個(gè)問(wèn)題比較寬泛,歡迎指教和討論。
2 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
我對(duì)你具體業(yè)務(wù)這一塊不是很了解啊。不過(guò)看你上面的問(wèn)題,url是怎么樣的并不是那么重要,restful其實(shí)除了json,還有xml,form,url query等多種方式,flask-restful都是支持的。剩下主要問(wèn)題就是鑒權(quán)方式,原理都差不多,無(wú)非是傳輸或存放的地方不一樣,可以是:session,cookie,url params,http header等等。
- 2 回答
- 0 關(guān)注
- 868 瀏覽
添加回答
舉報(bào)
0/150
提交
取消