本文使用python對Bmob REST API的基本增刪改查接口進(jìn)行封裝,方便在小程序開發(fā)時(shí)批量插入原始數(shù)據(jù)。 常用操作函數(shù)封裝#!/usr/bin/python # coding:utf-8 # Bmob后端云基本REST API封裝 import requests import json # 每個(gè)應(yīng)用都會(huì)有這兩個(gè)ID,以下方法如果不傳入這兩個(gè)參數(shù),那么使用這里默認(rèn)的值 APP_ID = 'XXX' REST_API_KEY = 'XXX' # 封裝rest api的get方法,根據(jù)對象ID獲取一條數(shù)據(jù) # table_name:要查詢的表名 # object_id:要查詢的數(shù)據(jù)記錄的ID def query(table_name,object_id,app_id = APP_ID,rest_api_key = REST_API_KEY): # 構(gòu)建請求頭 headers = {} headers['X-Bmob-Application-Id'] = app_id headers['X-Bmob-REST-API-Key'] = rest_api_key # 構(gòu)建url url = 'https://api.bmob.cn/1/classes/{table_name}/{object_id}'.format(table_name = table_name,object_id = object_id) # 發(fā)起請求 resp = requests.get(url,headers = headers,verify = False) # 設(shè)置響應(yīng)體編碼 resp.encoding = 'utf-8' if resp and resp.status_code == 200: return json.loads(resp.text) return None # 封裝rest api的post方法,插入一條記錄 # table_name:表名,如果表名還不存在,則先創(chuàng)建一個(gè)表再插入數(shù)據(jù) # data:字典,要插入的記錄的各個(gè)字段的字段名和值 def insert(table_name,data,app_id = APP_ID,rest_api_key = REST_API_KEY): # 構(gòu)建請求頭 headers = {} headers['X-Bmob-Application-Id'] = app_id headers['X-Bmob-REST-API-Key'] = rest_api_key headers['Content-Type'] = 'application/json' # 構(gòu)建url url = 'https://api.bmob.cn/1/classes/{table_name}'.format(table_name = table_name) # 發(fā)起請求 resp = requests.post(url,headers = headers,data = json.dumps(data),verify = False) # 設(shè)置響應(yīng)體編碼 resp.encoding = 'utf-8' if resp and resp.status_code == 201: print 'insert success!' return json.loads(resp.text) return None # 封裝rest api的put方法,傳入記錄ID,修改一條數(shù)據(jù) # table_name:要更新的表名 # object_id:要更新的數(shù)據(jù)記錄的ID # data:字典類型,要更新的數(shù)據(jù)的鍵值對 def update(table_name,object_id,data,app_id = APP_ID,rest_api_key = REST_API_KEY): # 構(gòu)建請求頭 headers = {} headers['X-Bmob-Application-Id'] = app_id headers['X-Bmob-REST-API-Key'] = rest_api_key headers['Content-Type'] = 'application/json' # 構(gòu)建url url = 'https://api.bmob.cn/1/classes/{table_name}/{object_id}'.format(table_name = table_name,object_id = object_id) # 發(fā)起請求 resp = requests.put(url,headers = headers,data = json.dumps(data),verify = False) # 設(shè)置響應(yīng)體編碼 resp.encoding = 'utf-8' if resp and resp.status_code == 200: print 'update {0} success!'.format(object_id) return json.loads(resp.text) return None # 封裝rest api的delete方法,根據(jù)對象ID刪除一條記錄 # table_name:要?jiǎng)h除的記錄所在的表名 # object_id:要?jiǎng)h除的數(shù)據(jù)記錄的ID def delete(table_name,object_id,app_id = APP_ID,rest_api_key = REST_API_KEY): # 構(gòu)建請求頭 headers = {} headers['X-Bmob-Application-Id'] = app_id headers['X-Bmob-REST-API-Key'] = rest_api_key # 構(gòu)建url url = 'https://api.bmob.cn/1/classes/{table_name}/{object_id}'.format(table_name = table_name,object_id = object_id) # 發(fā)起請求 resp = requests.delete(url,headers = headers,verify = False) # 設(shè)置響應(yīng)體編碼 resp.encoding = 'utf-8' if resp and resp.status_code == 200: print 'delete {0} success!'.format(object_id) return json.loads(resp.text) return None # 查詢一個(gè)表中的所有數(shù)據(jù) # table_name:要查詢的表名 def list(table_name,app_id = APP_ID,rest_api_key = REST_API_KEY): # 構(gòu)建請求頭 headers = {} headers['X-Bmob-Application-Id'] = app_id headers['X-Bmob-REST-API-Key'] = rest_api_key # 構(gòu)建url url = 'https://api.bmob.cn/1/classes/{table_name}'.format(table_name = table_name) # 發(fā)起請求 resp = requests.get(url,headers = headers,verify = False) # 設(shè)置響應(yīng)體編碼 resp.encoding = 'utf-8' if resp and resp.status_code == 200: return json.loads(resp.text)['results'] return None # 批量操作:批量創(chuàng)建 # request_data結(jié)構(gòu): ''' table_name = 'test' { "requests":[ { "method":"POST", "path":"/1/classes/{0}".format(table_name), "body":{ "name":"Tom", "age":18 } }, { "method":"POST", "path":"/1/classes/{0}".format(table_name), "body":{ "name":"John", "age":21 } } ] } ''' def batch_insert(request_data,app_id = APP_ID,rest_api_key = REST_API_KEY): # 構(gòu)建請求頭 headers = {} headers['X-Bmob-Application-Id'] = app_id headers['X-Bmob-REST-API-Key'] = rest_api_key headers['Content-Type'] = 'application/json' # url url = 'https://api.bmob.cn/1/batch' # 發(fā)起請求 resp = requests.post(url,data = json.dumps(request_data),headers = headers,verify = False) # 設(shè)置響應(yīng)體編碼 resp.encoding = 'utf-8' if resp and resp.status_code == 200: return json.loads(resp.text) return None 調(diào)用示例#!/usr/bin/python # coding:utf-8 # 測試工具方法的使用 import bmob_base_utils as utils def main(): # 測試query方法 #resp = utils.query(table_name = 'monthly', object_id = '2290ce60cc') #print resp # 測試insert方法 ''' data = {'name':'Ben','age':18} resp = utils.insert(table_name = 'test',data = data) print resp ''' # 測試update方法 #data = {'age':999} #utils.update(table_name = 'test',object_id = '79cfd8639b',data = data) # 測試delete方法 #utils.delete(table_name = 'test', object_id = '79cfd8639b') # 測試list方法 # print utils.list('test') # 測試batch_insert方法 request_data = {} request_data['requests'] = [] table_name = 'test' data1 = { "method":"POST", "path":"/1/classes/{0}".format(table_name), "body":{ "name":"Tom", "age":18 } } data2 = { "method":"POST", "path":"/1/classes/{0}".format(table_name), "body":{ "name":"John", "age":21 } } request_data['requests'].append(data1) request_data['requests'].append(data2) utils.batch_insert(request_data) if __name__ == '__main__': main() |