W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
2.9.4
API 均在 wx.serviceMarket 對(duì)象下。invokeService 方法可以通過(guò)兼容性配置,無(wú)需依賴 2.9.4 即可使用,配置方法見(jiàn)底部 兼容性配置 章節(jié)說(shuō)明。
從 2.11.1 開(kāi)始,插件內(nèi)也可以使用 wx.serviceMarket API,在調(diào)用時(shí),消耗的是宿主的資源而不是插件方的資源。
調(diào)用服務(wù)提供商提供的 API
入?yún)?/p>
接收一個(gè)對(duì)象,對(duì)象下有如下定義的字段:
字段名 | 類(lèi)型 | 必填 | 默認(rèn)值 | 說(shuō)明 |
---|---|---|---|---|
service | string | 是 | 服務(wù)提供商 ID | |
api | string | 是 | 是 | 服務(wù) API 名 |
data | Object | 否 | 傳遞給服務(wù) API 的 JSON 數(shù)據(jù) |
返回值
返回一個(gè) Promise,如調(diào)用失敗,則 reject 一個(gè) Error 對(duì)象,如調(diào)用成功,則 resolve 結(jié)果為如下定義的對(duì)象:
字段名 | 類(lèi)型 | 必填 | 默認(rèn)值 | 說(shuō)明 |
---|---|---|---|---|
data | Object | String | 是 |
在 data 中,如果服務(wù)提供商要求其中某個(gè)字段為文件 URL、并且此時(shí)希望將本地文件/大數(shù)據(jù)上傳成 URL 作為字段值傳入,則可以使用我們提供的 CDN 方法對(duì)相應(yīng)值進(jìn)行標(biāo)記,微信會(huì)自動(dòng)在調(diào)用服務(wù) API 的時(shí)候?qū)⑵滢D(zhuǎn)換成 CDN URL 給到服務(wù)提供方。
錯(cuò)誤碼
錯(cuò)誤碼 | 含義 |
---|---|
-1 | 入?yún)㈠e(cuò)誤 |
-2 | 調(diào)用失敗 |
-3 | 邏輯失敗 |
-6 | appid錯(cuò)誤 |
-7 | api信息錯(cuò)誤 |
-8 | api信息錯(cuò)誤 |
-10 | api扣費(fèi)失敗 |
-11 | 命中頻率 |
示例代碼 1: OCR
從手機(jī)選擇圖片后,調(diào)用 OCR 服務(wù)。OCR 服務(wù)要求調(diào)用方傳圖片,接收?qǐng)D片的方式是圖片 URL。OCR 服務(wù)要求調(diào)用方的 data 結(jié)構(gòu)如下:
字段名 | 類(lèi)型 | 必填 | 默認(rèn)值 | 說(shuō)明 |
---|---|---|---|---|
img_url | string | 是 | 圖片 URL | |
data_type | number | 是 | 固定為 3,表示 URL 形式的圖片 | |
ocr_type | number | 是 | OCR 類(lèi)型,1 為身份證識(shí)別 |
OCR 的接口需要傳入圖片 URL,如果需要將手機(jī)本地選擇的圖片上傳轉(zhuǎn)換成 URL,可以使用 CDN 方法對(duì)文件路徑進(jìn)行標(biāo)記(或用任意的存儲(chǔ)服務(wù)和自建的存儲(chǔ)服務(wù),也可以使用云開(kāi)發(fā)的云文件存儲(chǔ)服務(wù),但都沒(méi)有 CDN 方法便捷),以下給出使用 CDN 方法的示例:
// 選擇圖片
wx.chooseImage({
count: 1,
success: async function(res) {
try {
const invokeRes = await wx.serviceMarket.invokeService({
service: 'wx79ac3de8be320b71',
api: 'OcrAllInOne',
data: {
// 用 CDN 方法標(biāo)記要上傳并轉(zhuǎn)換成 HTTP URL 的文件
img_url: new wx.serviceMarket.CDN({
type: 'filePath',
filePath: res.tempFilePaths[0],
}),
data_type: 3,
ocr_type: 1
},
})
console.log('invokeService success', invokeRes)
wx.showModal({
title: 'success',
content: JSON.stringify(invokeRes),
})
} catch (err) {
console.error('invokeService fail', err)
wx.showModal({
title: 'fail',
content: err,
})
}
},
fail: function(res) {},
complete: function(res) {},
})
示例代碼 2: 普通 JSON 協(xié)議接口
有些服務(wù)不需要用到 CDN 輔助接口,可以直接 JSON 調(diào)用,以下任意舉例:
// 選擇圖片
wx.chooseImage({
count: 1,
success: function(res) {
// 調(diào)用 OCR 服務(wù)
wx.serviceMarket.invokeService({
service: 'some_service_id',
api: 'test',
data: {
type: 'x',
name: 'y',
},
}).then(res => {
console.log('invokeService success', res)
}).catch(err => {
console.error('invokeService fail', err)
})
},
fail: function(err) {
console.error(err)
},
})
標(biāo)記需要上傳到 CDN 的文件/大字符串然后轉(zhuǎn)換成 HTTP URL 的數(shù)據(jù),必須在 invokeService 中使用。
CDN 方法可以接收三種參數(shù)類(lèi)型:
當(dāng)使用文件路徑定義對(duì)象時(shí),將在調(diào)用服務(wù) API 時(shí)自動(dòng)將相應(yīng)文件路徑對(duì)應(yīng)的文件內(nèi)容上傳至 CDN 并轉(zhuǎn)換成 CDN URL,對(duì)象定義如下:
字段名 類(lèi)型 必填 默認(rèn)值 說(shuō)明 type String 是 定義對(duì)象的類(lèi)型,必填 filePath filePath String 是 文件路徑
入?yún)?/p>
接收一個(gè)對(duì)象,對(duì)象下有如下定義的字段:
字段名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 定義對(duì)象的類(lèi)型,必填 filePath |
filePath | string | 是 | 文件路徑 |
可以通過(guò)兼容性配置讓 wx.serviceMarket.invokeService API 的使用不受基礎(chǔ)庫(kù)版本約束,配置方式是:在 app.json / game.json 中指定頂層字段 "servicemarket": true,在預(yù)覽發(fā)布時(shí)小程序代碼包會(huì)自動(dòng)包含此 API 的兼容代碼,在 2.9.4 以下也可使用。僅在手機(jī)上使用,工具中調(diào)試請(qǐng)選擇 2.9.4 基礎(chǔ)庫(kù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: