æ·»å APIs èªå®ä¹æ¹æ³
ä¸äºç¨æ·çº§å«ç APIs æ¯ææ·»å èªå®æ¹æ³

æ¹æ³å ¥åâ
å
¥å å³ç¨äºæè¿°ä¸è¿°å½æ° params çç»æ. è¥å½æ°æ åæ°, åä¸å¡«å.
è¥å½æ°æåæ°, ååæ°å¿
须为 对象, å
¥åä¸æè¿°åæ®µç»æåºå½ä¸å½æ°å®é
使ç¨ç params ç»æä¸è´, å¦åå¨å¾®æåºç¨ç¼è¾å¨ä¸ä½¿ç¨æ¶å¯è½åºé.
å¨å¾®æåºç¨ç¼è¾å¨ä¸ä½¿ç¨æ°æ®æºæ¶, ä¼ä½¿ç¨å°æ°æ®æºæ¹æ³ å
¥å ä¸æè¿°çç»æä¿¡æ¯, æ¯å¦:
- æ°æ®æºåéçå®ä¹ä¸, 伿 ¹æ®å ¥åæç¤ºçç»æçæåéçé 置表å(æç¤ºåºå段ç䏿å, æ ¹æ®ä¸åç±»åæ¾ç¤ºä¸åçè¡¨åæ§ä»¶)
- 表å容å¨å ³èæ°æ®æºæ¹æ³å, 伿 ¹æ®å ¥åç»æä¿¡æ¯çæå®æ´ç表å, å¦: å ¥åä¸ åæ®µåç§° ä¼åæè¡¨åè¾å ¥æ¡ç åæ®µæ é¢, å ¥åä¸åæ®µç æ°æ®ç±»å å¯è½ä¼ç¨äºçæä¸åç±»åçè¾å ¥æ¡(ææºå·è¾å ¥æ¡/é®ä»¶è¾å ¥æ¡/å¼å ³éæ©å¨ç), å ¥åä¸ æä¸¾ ä¿¡æ¯ä¼ç¨äºçæ å¤éè¾å ¥æ¡ æè 䏿鿡, çç.
以ä¸åªæ¯ä¸¾ä¾è¯´æ, æ°æ®æºæ¹æ³å
¥åå¨å¾®æåºç¨ç¼è¾å¨ä¸ç使ç¨åºæ¯å¾å¤, æ
å¨å¡«å å
¥å æ¶ä¿¡æ¯æä¾çè¶å®æ´, å¨å¾®æåºç¨ç¼è¾å¨ä¸ä½¿ç¨æ¶åè¶æ¹ä¾¿.
å ¬å ±åéâ
å
Œ
±åéæä¾äºä¸ç§è·¨æ¹æ³çåéè°ç¨æ¹å¼ï¼å¯æ¯æå¨å¤ä¸ªAPIsä¸è¿è¡å¼ç¨ï¼ä¸è¬éç¨äºéæåéå¦APITokenï¼ClientIDç常éå¼ï¼å¯ä»¥ä½¿ç¨æ¨¡æ¿{{ }}æ¹å¼å¼ç¨ã
ä¾å¦è®¾ç½®å
Œ
±åéClientId, 使ç¨{{vars.ClientId}}å½¢å¼å¼ç¨ã

æ¹æ³ç±»åâ
æ°æ®æºæ¹æ³æ ¹æ®å®ç°æ¹å¼, å为两ç§:
- HTTP 请æ±: ä» å¤é¨æ°æ®æºä¸æä¾è¯¥ç±»åæ¹æ³, å¯ç®å对æ¥ç¬¬ä¸æ¹httpæ¥å£, å¯ä»¥éè¿ç®åçé ç½® HTTP 请æ±å°å ãæ¹æ³ ãåæ°çç å³å¯å¾å®ææ¹æ³çé ç½®
- äºå½æ°: éè¿ç¼åjsä»£ç æ¥å®ç°æ´çµæ´»çåè½, å æ¬åèµ· HTTP 请æ±
HTTP请æ±â
HTTP请æ±åºå±ä¹åºäºäºå¼åçäºå½æ°è½åå°è£ , æä¾äºå¯è§åãå¿«éæ¥å ¥ç¬¬ä¸æ¹ HTTP API çåè½.

HTTP é
ç½®ä¸é
ç½®çæ¯ HTTP 请æ±åºå±ç请æ±åæ°, å¨é
ç½® URLã Query å Headers ç value ãBody(ä»
è¯·æ±æ¹æ³Method为 POST å PUTæ¶å¯é
ç½®) å¯ä»¥ä½¿ç¨æ¨¡ç {{ }} æ¹å¼å¼ç¨ä¸è¿°å段:
- å¼ç¨å
¥åä¸å®ä¹çåæ®µ, 使ç¨
{{ params.åæ®µæ è¯ }}å½¢å¼ - å¼ç¨ç¯å¢åéä¿¡æ¯, 使ç¨
{{ env.åæ®µæ è¯ }}å½¢å¼, å¦{{ env.openId }} - å¼ç¨å
Œ
±éä¿¡æ¯, 使ç¨
{{ vars.åæ®µæ è¯ }}å½¢å¼
å¨é ç½®Bodyæ¶, å¡«åçå 容ä½ä¼ä¸ºä¸ä¸ªå®æ´çå符串模çå¤ç, åºä¿è¯æ¨¡çå¤çåçç»æç¬¦åBodyç±»å(JSON/FORM/XML)çè¦æ±, å¦å请æ±ä¼ç´æ¥å¤±è´¥.
ä¾å¦:
å
¥å params 为 { age: 12, name: 'Saurus', tags: ['aaa', 'bbb'] }, HTTPé
ç½®ä¸ Body çç±»å为 JSON.
æ£ç¡®ç Body 示ä¾, 请æ±å¯ä»¥æ£å¸¸åé:
- åå¦ Body å
容为
{ "age": {{params.age}} }, å¾å°çç»æä¸º{ "age": 12 } - åå¦ Body å
容为
{ "age": "{{params.age}}" }, å¾å°çç»æä¸º{ "age": "12" }, 注æageçå¼ ä¸ºå符串 - åå¦ Body å
容为
{ "tags": {{params.tags}} }, å¾å°çç»æä¸º{ "tags": ["aaa", "bbb"] }
é误ç Body 示ä¾, 请æ±å°ç´æ¥å¤±è´¥:
- åå¦ Body å
容为
{ age: {{params.age}} }, å¾å°çç»æä¸º{ age: 12 },age缺å°åå¼å·"å 裹 - åå¦ Body å
容为
{ "name": {{params.name}} }, å¾å°çç»æä¸º{ "name": Saurus },Saurus缺å°åå¼å·"å 裹 - åå¦ Body å
容为
{ "tags": "{{params.tags}}" }, å¾å°çç»æä¸º{ "tags": "["aaa", "bbb"]" },tagsçå¼è¯æ³é误
äºå½æ°â
äºå½æ°æ¯ä¸ç§ç¹æ®çJavascript彿°, åºå±åºäºäºå¼åçäºå½æ°è½åå°è£ , æç»ä¼è¿è¡å¨æå¡å¨ç«¯ç Nodejs 10.15 ç¯å¢ä¸, å¯ä»¥éè¿å½æ°ç contextåæ°æ¥è®¿é® äºå¼ånode sdk çææè½åã
äºå½æ°ç¼åéæ³¨æä»¥ä¸å ç¹:
- äºå½æ°å¿
须使ç¨
module.exportså¯¼åº - äºå½æ°åªæ¥åä¸¤ä¸ªåæ°:
params: 彿°æ¥åçåæ°, å³å¨æ¹æ³å ¥åæè¿°çç»æ. éä¿è¯å®é ä½¿ç¨æ¶paramsä¸ æ¹æ³å ¥å æè¿°çç»æä¸è´context: äºå½æ°ä¸ä¸æå¯¹è±¡, æ¹ä¾¿å¨äºå½æ°ä¸å®ç°åç§åè½, å ·ä½ç»æå¯åè äºå½æ°context
- äºå½æ°è¿åçç»æ, å³
returnè¯å¥è¿åçå 容åºå½æ¯ä¸ä¸ª 对象, ååºå½ä¸ æ¹æ³åºå æè¿°çä¸è´ - äºå½æ°ä¸è¥åç°é误, å¯ä»¥ç´æ¥
throw new Error('xxxx')æ¥æåºé误, ä¹å¯ä»¥ä½¿ç¨throw new TCBError(code, 'msg')æåºé误并èªå®ä¹é误代ç . - äºå½æ°å¼åè¿ç¨ä¸å¯ä»¥å¨éè¿
console.log('xxxx')è¾åºæ¥å¿, åä½¿ç¨ æ¹æ³æµè¯ æ¥æµè¯æ¥çæ¥å¿ - äºå½æ°è¿è¡çç¯å¢ä¸º Nodejs 10.15, 注æä¸è¦ä½¿ç¨å½åçæ¬ä¸æ¯æçjsç¹æ§, æ¯å¦å¯éé¾ç.
ä¸è¾¹æ¯ä¸ºèªå»ºæ°æ®æºæ·»å èªå®ä¹çåå»ºæ¹æ³ç示ä¾ä»£ç :
å设该èªå»ºæ°æ®æºæä¸¤ä¸ªèªå®ä¹æ°æ®æºå段 nameãemail, 以ä¸ä»£ç å°å¯¹åæ°è¿è¡æ ¡éª, å¹¶éå¶åªè½ä½¿ç¨ qq é®ç®±, å¹¶æåè¿åæ°è®°å½çID
module.exports = async function (params, context) {
// è¾åºæ¥å¿, æ¹ä¾¿è°è¯, å¨ æ¹æ³æµè¯ ä¸å¯ä»¥çå°æ¥å¿
console.log('params', params);
if (!params.name || !params.email) throw new TCBError(1, 'name æ email ä¸è½ä¸ºç©º');
if (!/@qq\.com$/i.test(params.email)) throw new TCBError(2, 'ä»
æ¯æä½¿ç¨qqé®ç®±');
const now = Date.now();
// 追å å建æ¶é´ãæ´æ°æ¶é´
const newParams = Object.assign({}, params, {
createdAt: now,
updatedAt: now,
});
// 使ç¨äºå¼åç collection ç¸å
³APIæ·»å è®°å½
const result = await context.collection.add(newParams);
// è¿åæ°è®°å½çIDä¿¡æ¯
return { _id: result.id };
}
èªå®ä¹ä»£ç contextâ
context 为ä½ç åäºå½æ°æä¾çä¸ä¸æå¯¹è±¡, é颿ä¾äºæä½æ°æ®åºãè°ç¨äºå¼åäºå½æ°ç对象以åä¸äºæç¨çç¯å¢åé.
| åæ° | ç±»å | å¿ é¡» | 说æ |
|---|---|---|---|
| cloudbase | tcb | æ¯ | äºå¼ånode sdk 对象, å³ import tcb from '@cloudbase/node-sdk'; å¼å
¥ç tcb, ä½¿ç¨ææ¡£ |
| app | tcb.CloudBase | æ¯ | äºå¼å node sdk åå§ååè¿åç app 对象, å³ const app = tcb.init({...}) å¾å°ç app. åå§åé»è®¤ä½¿ç¨å½åä½ç 使ç¨çäºå¼åç¯å¢ç¸å
³åæ°è¿è¡åå§å.å¯ä½¿ç¨ app ç´æ¥è°ç¨ äºå¼åäºå½æ°ååå¨ç¸å
³è½å(å¦app.callFunction({...})ãapp.uploadFile({...})), ä½¿ç¨ææ¡£ |
| auth | äºå¼åé´æå¯¹è±¡ | æ¯ | ä¸è¿° app.auth() è¿åå¾å°ç auth 对象, å¯ç¨äºç´æ¥è°ç¨é´æç¸å
³çè½åå¦(å¦ auth.getUserInfo(), auth.getEndUserInfo() çç), ä½¿ç¨ææ¡£ |
| database | äºå¼åæ°æ®åºå¯¹è±¡ | æ¯ | äºå¼å node sdk çæ°æ®åºå¯¹è±¡, å³ app.database() è¿åç对象. å¯ä½¿ç¨ database è·åéåçå¼ç¨(database.collection(('<collection-name>')), è®¿é®æä»¤å¯¹è±¡(database.command)çç.ä½¿ç¨ææ¡£ |
| collection | äºå¼åæ°æ®åºéå对象 | å¦ | å½åæ°æ®æºå
³èçæ°æ®åºè¡¨çå¼ç¨å¯¹è±¡(äºå¼å node sdk çéåå¼ç¨å¯¹è±¡), ä»
èªå»ºæ°æ®æºææè¯¥å±æ§, å³ context.database.collection(context.env.dataSourceFullName) è¿åç对象. å¯ç´æ¥ä½¿ç¨è¯¥å¯¹è±¡å½åæ°æ®æºçæ°æ®åºè¡¨è¿è¡è¯»åæä½, ä½¿ç¨ææ¡£ |
| env | ç¯å¢åé | æ¯ | å ·ä½è¯·åèç¯å¢åé |
| httpAuth | authå¤ç对象 | å¦ | ä» ä½¿ç¨éç©ºç½æ¨¡çå建çç¬¬ä¸æ¹æ°æ®æºæè¯¥å¯¹è±¡, å ·ä½ä½¿ç¨å¯åèå¦ä½ä¸ºä½¿ç¨æ¨¡çå建çç¬¬ä¸æ¹æ°æ®æºéææ°çæ¹æ³ |
| vars | 对象 | æ¯ | å½åæ°æ®æºçå ¬å ±åé |
ç¯å¢åéâ
| åæ° | ç±»å | å¿ é¡» | 说æ |
|---|---|---|---|
| openId | string | å¦ | 微信openIdï¼é微信ææç»å½å空 |
| fromOpenId | string | å¦ | 微信ä¸, å¤ä¸ªå°ç¨åºå ±äº«åä¸ä¸ªç¯å¢æ¶(å³ä¸ä¸ªå¾®æç¯å¢ç»å®äºå¤ä¸ªå°ç¨åº), æ¥æºå°ç¨åºçç¨æ· openId, å®é ä½¿ç¨æ¶åºå½ä¼å 使ç¨è¯¥å¼ |
| currentOpenId | string | å¦ | å½å¤ä¸ªå°ç¨åºå
±äº«åä¸ä¸ªç¯å¢æ¶(å³ä¸ä¸ªå¾®æç¯å¢ç»å®äºå¤ä¸ªå°ç¨åº), è¥è¯·æ±æ¥èªäºå
±äº«çå°ç¨åº, å currentOpenId 为 ä¸è¿°ç fromOpenId, å¦å为 openId |
| appId | string | å¦ | 微信appIdï¼é微信ææç»å½å空 |
| fromAppId | string | å¦ | 微信ä¸, å¤ä¸ªå°ç¨åºå ±äº«ç¯å¢æ¶(å³ä¸ä¸ªå¾®æç¯å¢ç»å®äºå¤ä¸ªå°ç¨åº), æ¥æºå°ç¨åºçappId, å®é ä½¿ç¨æ¶åºå½ä¼å 使ç¨è¯¥å¼ |
| currentAppId | string | å¦ | å½å¤ä¸ªå°ç¨åºå
±äº«åä¸ä¸ªç¯å¢æ¶(å³ä¸ä¸ªå¾®æç¯å¢ç»å®äºå¤ä¸ªå°ç¨åº), è¥è¯·æ±æ¥èªäºå
±äº«çå°ç¨åº, å currentAppId 为 ä¸è¿°ç fromAppId, å¦å为 appId |
| uid | string | å¦ | tcbç¨æ·å¯ä¸ID |
| customUserId | string | å¦ | å¼åè èªå®ä¹çç¨æ·å¯ä¸idï¼éèªå®ä¹ç»å½å空 |
| isAnonymous | boolean | æ¯ | æ¯å¦ä¸ºå¿åç¨æ· |
| dataSourceName | string | æ¯ | æ°æ®æºæ è¯, ç¨æ·å¨æ°æ®æºç®¡çä¸åå»ºçæ°æ®æºææè¯¥å±æ§ |
| dataSourceFullName | string | å¦ | æ°æ®æºå®æ´åç§°, 为é¨ç½²ååºå±(äºå½æ°åç§°/æ°æ®åºè¡¨å)å®é 使ç¨çæ å¿ |
| envId | string | æ¯ | äºå¼åç¯å¢ID |
| isPreview | boolean | æ¯ | æ¯å¦ä¸º ä½éªç¯å¢, å¼åè ä¸è¬ä¸éè¦ä½¿ç¨æ¹ä¿¡æ¯. 详è§ä¸æ¹ ç¯å¢è¯´æ |
| envType | prod pre | æ¯ | ç¯å¢ç±»å, pre: ä½éªç¯å¢, prod: æ£å¼ç¯å¢; å¼åè ä¸è¬ä¸éè¦ä½¿ç¨æ¹ä¿¡æ¯. 详è§ä¸æ¹ ç¯å¢è¯´æ |
ç¯å¢è¯´æâ
å¾®æçæåºçåºç¨å为两ç§:
ä½éªåºç¨: ç¨äºå¨å¾®æä¸å¼åæµè¯åºç¨. å¨åºç¨ç¼è¾å¨ä¸éè¿é¢è§åºç宿¶çå®é¢è§å¼å ³ãç¼è¾å¨é¡¶é¨çé¢è§ä»¥åé¡¶é¨ åå¸å¯¹è¯æ¡ ä¸çå叿¹å¼ä½éªå¾å°çåºç¨åå±äºä½éªåºç¨.æ£å¼åºç¨: ç¨äºæ£å¼åå¸ç»ç»ç«¯ç¨æ·ä½¿ç¨. å¨åºç¨ç¼è¾å¨éè¿é¡¶é¨ åå¸å¯¹è¯æ¡ ä¸çå叿¹å¼æ£å¼å¾å°çåºç¨å³ä¸ºæ£å¼åºç¨.
ä½éªåºç¨ å æ£å¼åºç¨ è°ç¨çæ°æ®æºåå¾®æåç«¯æ¯ææå¡çæ°æ®åæ¯äºç¸é离ãäºä¸å½±åç, åå«ä¼è°ç¨å°ä¸åçå端ç¯å¢:
ä½éªç¯å¢: 被ä½éªåºç¨è°ç¨.æ£å¼ç¯å¢: 被æ£å¼åºç¨è°ç¨.
ç¨æ·å¨å¾®æçæ°æ®æºç®¡çä¸, æ°å»º/ç¼è¾ä¿åæ°æ®æºçæ¶å, åä¼èªå¨æ´æ° ä½éªç¯å¢ çæ°æ®æº. 彿°æ®æºæµè¯éªè¯éè¿å, ç¹å»æ°æ®æºç®¡çä¸ç ç«å³åå¸ æé®åä¼å°æ°æ®æºæ´æ°è³ æ£å¼ç¯å¢.