天天看點

微信小程式開發實踐點滴——Bmob基本REST API的python封裝

Refer:Bmob後端雲REST API接口文檔:http://docs.bmob.cn/data/Restful/a_faststart/doc/index.html

本文使用python對Bmob REST API的基本增删改查接口進行封裝,友善在小程式開發時批量插入原始資料。

#!/usr/bin/python
# coding:utf-8
# Bmob後端雲基本REST API封裝
import requests
import json

# 每個應用都會有這兩個ID,以下方法如果不傳入這兩個參數,那麼使用這裡預設的值
APP_ID = 'XXX'
REST_API_KEY = 'XXX'

# 封裝rest api的get方法,根據對象ID擷取一條資料
# table_name:要查詢的表名
# object_id:要查詢的資料記錄的ID
def query(table_name,object_id,app_id = APP_ID,rest_api_key = REST_API_KEY):
    # 建構請求頭
    headers = {}
    headers['X-Bmob-Application-Id'] = app_id
    headers['X-Bmob-REST-API-Key'] = rest_api_key

    # 建構url
    url = 'https://api.bmob.cn/1/classes/{table_name}/{object_id}'.format(table_name = table_name,object_id = object_id)

    # 發起請求
    resp = requests.get(url,headers = headers,verify = False)

    # 設定響應體編碼
    resp.encoding = 'utf-8'

    if resp and resp.status_code == :
        return json.loads(resp.text)
    return None

# 封裝rest api的post方法,插入一條記錄
# table_name:表名,如果表名還不存在,則先建立一個表再插入資料
# data:字典,要插入的記錄的各個字段的字段名和值
def insert(table_name,data,app_id = APP_ID,rest_api_key = REST_API_KEY):
    # 建構請求頭
    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/classes/{table_name}'.format(table_name = table_name)

    # 發起請求
    resp = requests.post(url,headers = headers,data = json.dumps(data),verify = False)

    # 設定響應體編碼
    resp.encoding = 'utf-8'

    if resp and resp.status_code == :
        print 'insert success!'
        return json.loads(resp.text)
    return None

# 封裝rest api的put方法,傳入記錄ID,修改一條資料
# table_name:要更新的表名
# object_id:要更新的資料記錄的ID
# data:字典類型,要更新的資料的鍵值對
def update(table_name,object_id,data,app_id = APP_ID,rest_api_key = REST_API_KEY):
    # 建構請求頭
    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/classes/{table_name}/{object_id}'.format(table_name = table_name,object_id = object_id)

    # 發起請求
    resp = requests.put(url,headers = headers,data = json.dumps(data),verify = False)

    # 設定響應體編碼
    resp.encoding = 'utf-8'

    if resp and resp.status_code == :
        print 'update {0} success!'.format(object_id)
        return json.loads(resp.text)
    return None


# 封裝rest api的delete方法,根據對象ID删除一條記錄
# table_name:要删除的記錄所在的表名
# object_id:要删除的資料記錄的ID
def delete(table_name,object_id,app_id = APP_ID,rest_api_key = REST_API_KEY):
    # 建構請求頭
    headers = {}
    headers['X-Bmob-Application-Id'] = app_id
    headers['X-Bmob-REST-API-Key'] = rest_api_key

    # 建構url
    url = 'https://api.bmob.cn/1/classes/{table_name}/{object_id}'.format(table_name = table_name,object_id = object_id)

    # 發起請求
    resp = requests.delete(url,headers = headers,verify = False)

    # 設定響應體編碼
    resp.encoding = 'utf-8'

    if resp and resp.status_code == :
        print 'delete {0} success!'.format(object_id)
        return json.loads(resp.text)
    return None

# 查詢一個表中的所有資料
# table_name:要查詢的表名
def list(table_name,app_id = APP_ID,rest_api_key = REST_API_KEY):
    # 建構請求頭
    headers = {}
    headers['X-Bmob-Application-Id'] = app_id
    headers['X-Bmob-REST-API-Key'] = rest_api_key

    # 建構url
    url = 'https://api.bmob.cn/1/classes/{table_name}'.format(table_name = table_name)

    # 發起請求
    resp = requests.get(url,headers = headers,verify = False)

    # 設定響應體編碼
    resp.encoding = 'utf-8'

    if resp and resp.status_code == :
        return json.loads(resp.text)['results']
    return None