Flask AppBuilder自带REST API,但是这个REST API其实是AJAX目的,换而言之是自己网站使用的。由于后台模型的CURD操作,其API路径是这样的:
http://{domain}/{modelview}/api
http://{domain}/{modelview}/api/list
http://{domain}/{modelview}/api/create
http://{domain}/{modelview}/api/delete
http://{domain}/{modelview}/api/read
http://{domain}/{modelview}/api/update
我还真担心是否可以用于安全相关应用中。
而提供给移动APP和第三方应用需要额外的RESTFul API,并支持行业标准的认证算法。好在FAB和Flask的其他组件兼容性比较好。我试了一试:
class ApiView(BaseView):
route_base = "/apiv1"
default_view = "list"
@expose("/list", methods=['GET'])
def list(self):
return jsonify({'res':'OK','apis':['/apiv1/devices','/apiv1/accesses','/apiv1/accounts']})
@expose("/devices", methods=['GET'])
def devices(self):
return jsonify({'res':'OK','devices':["list of devices"]})
@expose("/accesses", methods=['GET'])
def accesses(self):
return jsonify({'res':'OK','accesses':["list of accesses"]})
@expose("/accounts", methods=['GET'])
def accounts(self):
return jsonify({'res':'OK','accounts':["list of accounts"]})
该为之后的路径是:
http://{domain}/apiv1/{resource}/{params}
CURD:
- Create by HTTP POST
- Update by HTTP PUT
- Read by HTTP GET
- Delete by HTTP DEL
至少JSON输出是有了。接下来是用户认证,看FAB的用户系统如何参与到认证过程中了。考虑集成REST-auth组件。