知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
小程序云開發(fā)數(shù)據(jù)庫API
發(fā)表時間:2020-10-27
發(fā)布人:葵宇科技
瀏覽次數(shù):74
小程序云開發(fā)HTTP API使用
本人使用Python3.X作為開發(fā)版本,其他語言類似,格式自己調(diào)一下(requests.post發(fā)請求)
主要用于,作為與小程序關(guān)聯(lián)的數(shù)據(jù)提供平臺,使用腳本或者開發(fā)WEB端平臺為小程序提供數(shù)據(jù)、或作為小程序的數(shù)據(jù)的管理端(CRUD)
在完成小程序認證、小程序項目創(chuàng)建后(要勾選云開發(fā)),可以在小程序控制臺(開發(fā)-開發(fā)設(shè)置)獲取你的AppID(小程序ID)以及AppSecret(小程序密鑰)并在成員管理中為添加開發(fā)者權(quán)限
小程序秘鑰只能查看一次,再次查看會重置(切記保存)
以下為API調(diào)用:
云開發(fā)有各種調(diào)用限制,免費環(huán)境為5萬次讀請求,3萬次寫請求,access_token獲取有次數(shù)限制(具體在文檔里找一下),任一次數(shù)超過調(diào)用上限即會被停服到隔天凌晨1點左右,小程序控制臺有每月10次清空調(diào)用次數(shù)
首先獲取小程序access_token(有效時間120min,且再次獲取,上次的會失效)
GRANT_TYPE = 'client_credential'
APP_ID = '你的AppID'
APP_SECRET = '你的AppSecret'
url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret{2}'.format(GRANT_TYPE,APP_ID,APP_SECRET)
response = requests.get(url)
result = response.json()
# 如果頻繁使用的話可以把token寫到一個txt文件中,但小程序沒有提供token是否有效的接口
print(result['access_token'])
新增集合(數(shù)據(jù)表)
url = 'https://api.weixin.qq.com/tcb/databasecollectionadd?access_token={0}'.format(access_token)
data = {
'env':'環(huán)境名',
'collection_name': '集合名稱'
}
requests.post(url, data=json.dumps(data))
新增完集合后,CRUD基本差不太多
# url有些區(qū)別(第一個是count集合有多少數(shù)據(jù))
url = 'https://api.weixin.qq.com/tcb/databasecount?access_token={}'.format(access_token)
url = 'https://api.weixin.qq.com/tcb/databaseadd?access_token={}'.format(access_token)
url = 'https://api.weixin.qq.com/tcb/databasedelete?access_token={}'.format(access_token)
url = 'https://api.weixin.qq.com/tcb/databaseupdate?access_token={}'.format(access_token)
url = 'https://api.weixin.qq.com/tcb/databasequery?access_token={}'.format(access_token)
# 小程序的sql語句
"""
小程序常用數(shù)據(jù)類型string、number(包括整型和浮點型)、array(數(shù)組)對應(yīng)python字符串格式化
'%s'、%d、%s,字符串要用引號包起來,數(shù)字不能用引號,str(list)傳入
query = "db.collection('集合名稱').where({字段名:'條件'})
.add({data:{[鍵:'值']}})/remove()/update({data:{鍵:'值'}})/get()"
"""
# get還可以加“.limit().skip()”加載get()之前,limit服務(wù)端默認為10,最大為1000
# 組織數(shù)據(jù)包
data = {
"env": "你的環(huán)境名稱在開發(fā)工具內(nèi)找到",
"query": query
}
# 字符串格式化后一定要轉(zhuǎn)成json字符串
response = requests.post(url, data=json.dumps(data))
print(response.json())
基本的增刪改查如果不能滿足你的需求,那你可以試一下極其難用的聚合操作
# 除url和query語句不同外,基本相同,寫db_handle類時可以提高復(fù)用性
url = 'https://api.weixin.qq.com/tcb/databaseaggregate?access_token={}'.format(access_token)
# 下面是我在開發(fā)是用過的一個簡單的聚合(自己調(diào)一下縮進)
query = "db.collection('Book_information').aggregate()
.match({'is_delete':0}).sort({create_time:-1})
.lookup({
from:'user_books',
localField:'book_name',
foreignField:'book_name',
as:'book_info'})
.skip(%d).limit(10).end()" % (page * 10)
"""
.aggregate():發(fā)起聚合操作
.match():等于普通語句的.where()
排序可以多字段排序
聚合階段: .sort({'字段名':-1,'多字段'}):根據(jù)某一字段排序,-1降序
普通查詢: .orderBy('字段名','asc').orderBy(多字段寫多個)
.group({
_id:$表內(nèi)字段名,
num:$.sum(1),
支持多字段,但多字段都為累加值,需要使用算數(shù)運算符
})
選擇輸出字段:
聚合階段: .project({多字段,_id默認保留})
普通查詢: .field({多字段,選擇要輸出的字段名})
.lookup():連表查詢,上方演示為二種中的一種
from:'連接的表名',
localField:'主表要連接的字段',
foreignField:'連接表的字段兩者相等即連接',
as:'book_info'(連接后,key為book_info,value為列表)
.end():聚合階段結(jié)束
"""
還有一個細節(jié)問題,普通查詢中,算數(shù)運算符和邏輯運算符要用“_.or”,而聚合操作中要使用“$.or”使用
常用邏輯運算符_.and/_.or
單字段
_.and({_.gt(50),_.(100)}) 或者 _.gt(50).and(_.lt(100))
多字段
_.and([{ progress: _.gt(50)},{tags: 'cloud'}])
where或match中多條件默認帶and
比較運算符
聚合階段時包括當前集合的字段名也要使用“$.”
gt 大于 llt 小于 eq 等于
gte 大于等于 lte 小于等于 neq 不等于
還有普通查詢特有
in,nin,可直接傳入一個數(shù)組
# 最后還有一個上傳文件到存儲
path = '文件路徑'
url = "https://api.weixin.qq.com/tcb/uploadfile?access_token={}".format(access_token)
data = {
"env": "環(huán)境名稱",
"path": "文件路徑(需要帶文件后綴名)"
}
response = requests.post(url, data=json.dumps(data))
result = response.json()
file = {"file": open(path, "rb")}
# 兩個data中的文件路徑為小程序云存儲中的路徑,文件夾好像是要提前創(chuàng)建
data = {
'key': '和data['path']相同',
'Signature': result['authorization'],
'x-cos-security-token': result['token'],
'x-cos-meta-fileid': result['cos_file_id']
}
requests.post(result['url'], data=data, files=file)
# 獲取下載連接的話去存儲里找一個直接拼接就可以了
'https://[這里有一個環(huán)境名需要找].tcb.qcloud.la/news_images/1601278105.5322824.jpg'
小程序開發(fā)者社區(qū)是個鬼社區(qū),我只能幫你到這里了~
相關(guān)案例查看更多
相關(guān)閱讀
- 云南企業(yè)網(wǎng)站
- 云南網(wǎng)站建設(shè)選
- 人人商城
- 汽車報廢管理
- 做小程序被騙
- 小程序的開發(fā)公司
- 網(wǎng)站建設(shè)費用
- 網(wǎng)站建設(shè)公司地址
- 云南網(wǎng)站建設(shè)價格
- 人口普查小程序
- APP
- 云南小程序開發(fā)費用
- 小程序用戶登錄
- SEO
- 云南軟件定制
- 昆明軟件定制
- 云南網(wǎng)站建設(shè)招商
- 昆明做網(wǎng)站建設(shè)的公司排名
- 云南網(wǎng)站建設(shè)快速優(yōu)化
- 云南科技公司
- 軟件定制
- 昆明網(wǎng)絡(luò)公司
- web開發(fā)技術(shù)
- 網(wǎng)站排名優(yōu)化
- 云南網(wǎng)站建設(shè)公司地址
- 云南省住房建設(shè)廳網(wǎng)站
- 小程序被騙
- 前端開發(fā)
- 百度排名
- 日歷組件