小程序模板網(wǎng)

Bmob基本REST API的python封裝

發(fā)布時(shí)間:2018-04-21 09:10 所屬欄目:小程序開發(fā)教程

本文使用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()


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://m.u-renovate.com/wxmini/doc/course/23835.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×