這是「流程和效率」系列之三
本文結(jié)構(gòu):
- 前文回顧
- #1 Workflow 給我們帶來(lái)什么
- #2 Workflow 的創(chuàng)建步驟
- #3 Workflow 調(diào)試工具
- 挖掘內(nèi)置動(dòng)作的能力
- #1 內(nèi)置動(dòng)作的 Workflow 實(shí)例
- 例 1:訂票提醒
- 例 2:魔性閃圖
- #2 了解和用好內(nèi)置動(dòng)作
- #3 了解數(shù)據(jù)的類型和傳遞
- #4 Scripting
- #1 內(nèi)置動(dòng)作的 Workflow 實(shí)例
- 利用無(wú)窮的外部接口——公開 API
- 例 1:在線分詞
- 例 2:掃碼查書
前文回顧
我們首先在《提高打開 App 的效率》中了解到 URL Schemes沸停,然后在《創(chuàng)建簡(jiǎn)單的 Workflow》中以此為基礎(chǔ),嘗試做了三個(gè) Workflow≌炎浚現(xiàn)在我們回頭做一下整理愤钾。
#1 Workflow 給我們帶來(lái)什么
我說(shuō)「Workflow 是一種用流程來(lái)解決問題的思維模式」,也許有人因此覺得候醒,這樣的思維模式把生活都變成了數(shù)學(xué)題能颁,毫無(wú)趣味可言。其實(shí)這是一種誤解倒淫。
真正無(wú)趣的情形是遇到重復(fù)的困擾卻不斷選擇忍受伙菊,它腐蝕人心,使我們變得麻木敌土。流程化思考镜硕,不但是主動(dòng)面對(duì)問題,而且是努力尋求一勞永逸的方法返干。相信自己能讓事情變得更好兴枯,這讓人感到更自由,這本就是一種樂趣矩欠。
回顧我們完成的三個(gè) Workflow财剖,一個(gè)實(shí)現(xiàn)了支付寶常用功能快速跳轉(zhuǎn)悠夯,一個(gè)實(shí)現(xiàn)了搜索引擎隨時(shí)切換、一個(gè)能幫助我們折算金額躺坟。它們所解決的困擾是微弱的沦补,但依然讓人獲得改善的信心。
有個(gè)狂熱愛好者說(shuō):「Workflow App 或許是無(wú)所不能的咪橙,限制我們的只是想象力策彤。」這話顯然是夸張的匣摘,Workflow App 不可能無(wú)所不能,但它的確令人驚嘆裹刮。
你也許從未想到 Workflow 與訂餐有什么聯(lián)系音榜,可是有選擇困難癥患者的確在用它訂餐:他列了一份口味清單和相應(yīng)的訂餐電話,讓 Workflow 幫他隨機(jī)選擇捧弃、自動(dòng)撥號(hào)赠叼。
有很多問題 Workflow 可以幫我們解決,只是我們沒有去想象违霞。我們沒有想讓 Workflow 替我們解決嘴办,只是因?yàn)閷?duì)它缺乏了解。
#2 Workflow 的創(chuàng)建步驟
遵循 Workflow 的思維模式买鸽,我們同樣將創(chuàng)建 Workflow 的工作流程化:
-
確定目標(biāo)
Workflow 的功能是什么涧郊?它要適用于哪些情形?我們據(jù)此設(shè)置 Workflow 的名稱眼五、圖標(biāo)妆艘、類別,以及接受的數(shù)據(jù)類型看幼。
-
確定核心步驟
暫時(shí)無(wú)視條件判斷和選項(xiàng)分支批旺,先只管挑選實(shí)現(xiàn)功能的關(guān)鍵動(dòng)作,構(gòu)建 Workflow 的核心步驟诵姜。
-
補(bǔ)完流程
擴(kuò)充核心步驟汽煮,添加條件判斷、運(yùn)行分支或數(shù)據(jù)運(yùn)算等等棚唆。
-
運(yùn)行測(cè)試
檢查是否忽略了特殊符號(hào)的編碼問題暇赤;在各種條件下試用 Workflow,看看是否出錯(cuò)瑟俭。
#3 Workflow 調(diào)試工具
Workflow 提供了 Quick Look 和 View Content Graph 兩個(gè)動(dòng)作翎卓,為我們測(cè)試提供了方便。
- Quick Look 直譯過(guò)來(lái)是瞥一眼摆寄,用于直接查看內(nèi)容失暴,讓我們看到內(nèi)容發(fā)生的變化坯门。
- View Content Graph 顯示圖表,用于查看數(shù)據(jù)構(gòu)成逗扒。
比如說(shuō)在 Select Contact 后面放 Quick Look 將顯示聯(lián)系人界面古戴,放 View Content Graph 將用放射結(jié)構(gòu)顯示該聯(lián)系人下包含哪些數(shù)據(jù)。
如果一個(gè)動(dòng)作修改了內(nèi)容矩肩,那么用 Quick Look 直接查看改動(dòng)现恼;如果想要獲得復(fù)合數(shù)據(jù)里的特定子項(xiàng),則應(yīng)該用 View Content Graph 了解它的結(jié)構(gòu)黍檩。
View Content Graph 和 Quick Look 可以幫助我們了解內(nèi)置動(dòng)作叉袍,或者在 Workflow 運(yùn)行出錯(cuò)時(shí)查找問題所在。
在動(dòng)手創(chuàng)建和調(diào)試 Workflow 的過(guò)程中刽酱,我們對(duì)它內(nèi)在和外延能力的了解會(huì)不斷加深喳逛。
挖掘內(nèi)置動(dòng)作的能力
不一定總要調(diào)用外在的 URL Schemes,使用 Workflow App 內(nèi)置的動(dòng)作就可以做出許多貼心的功能棵里。
#1 內(nèi)置動(dòng)作的 Workflow 實(shí)例
這里舉兩個(gè)例子润文。
例 1:訂票提醒
我打算過(guò)段時(shí)間出遠(yuǎn)門,需要訂票殿怜。這時(shí)候有兩個(gè)小小的煩惱典蝌,一是得花心思倒推訂票日期,二是沒到訂票那天就把這事給忘了头谜。這個(gè)問題用 Workflow 來(lái)解決很簡(jiǎn)單:
運(yùn)行一下看看:
它的確忠實(shí)可靠地計(jì)算出應(yīng)該訂票的日期骏掀,并且在日歷中添加了事件。
我們是不是還可以再懶一點(diǎn)乔夯?比如說(shuō)訂票有 App 訂票砖织、電話訂票和去附近售票點(diǎn)購(gòu)買三種方式,我們可以把相應(yīng)的 URL Schemes 填寫到日歷事件的 Notes 中末荐,屆時(shí)點(diǎn)擊 URL Schemes 立即啟動(dòng)訂票 App侧纯、呼出訂票電話,或是在地圖中搜索附近的售票點(diǎn)甲脏。
例 2:魔性閃圖
合成魔性閃圖的 Workflow 可能更讓人驚奇眶熬,但它其實(shí)更簡(jiǎn)單:
運(yùn)行效果就不貼了,自己試試吧块请。
#2 了解和用好內(nèi)置動(dòng)作
Workflow App 被設(shè)計(jì)得極其易用娜氏,我們只需拖放動(dòng)作卡片就可以拼裝 Workflow《招拢看了上述兩個(gè)例子贸弥,你應(yīng)該發(fā)現(xiàn)這話并不夸張。
在「魔性閃圖」這個(gè) Workflow 中海渊,你需要做的調(diào)整僅是打開 Select Multiple 開關(guān)绵疲。
有些人習(xí)慣使用本子記錄日程哲鸳,在「訂票提醒」的例子中,他可能發(fā)現(xiàn)了日歷 App 在交互上的獨(dú)特優(yōu)勢(shì)盔憨。Calendar 類的動(dòng)作支持日歷事件的添加徙菠、刪除、查詢郁岩,結(jié)合日期計(jì)算動(dòng)作婿奔,用戶在安排日程和調(diào)配時(shí)間時(shí)會(huì)更輕松。
Workflow App 的內(nèi)置動(dòng)作分為 12 類问慎,除 Scripting 比較特殊萍摊,其他各類動(dòng)作的作用均一目了然。
比如 Calendar 類的動(dòng)作主要與日期計(jì)算如叼、日程提醒相關(guān)记餐;Contacts 類的動(dòng)作能讀取聯(lián)系人的電話號(hào)碼、地址薇正、郵箱等數(shù)據(jù)……
動(dòng)手嘗試拼裝 Workflow硬毕,是熟悉這些動(dòng)作的最好方法沾凄。遇到看不明白的動(dòng)作卡片時(shí),我們?yōu)樗陆ㄒ粋€(gè)臨時(shí)佛掖、短小的 Workflow练湿,并在后面放上 Quick Look 或 View Content Graph猴仑,就能在運(yùn)行時(shí)生動(dòng)地看到動(dòng)作卡片的運(yùn)行效果。
#3 了解數(shù)據(jù)的類型和傳遞
在「Workflow 進(jìn)階」部分肥哎,我們創(chuàng)建的搜索引擎聚合必須接受數(shù)據(jù)傳入辽俗,它可能是在網(wǎng)頁(yè)或其他 App 中選中的內(nèi)容,也可能是在 Ask for Input 界面中我們手動(dòng)輸入的文字篡诽。
在貨幣換算的 Workflow 中崖飘,它接受的數(shù)據(jù)只能是數(shù)字而不能是文字;在合成魔性閃圖的 Workflow 中杈女,Select Photos 動(dòng)作選擇的數(shù)據(jù)類型是 Image(圖片)朱浴。
通過(guò)這些例子,我們意識(shí)到數(shù)據(jù)有類型之分达椰。
-
數(shù)據(jù)類型
在 Ask for Input 界面可以看到翰蠢,基本的數(shù)據(jù)類型大致是 Text(文本)、Number(數(shù)字)啰劲、URL(網(wǎng)址)梁沧、Date(日期),除此之外還有一些常用文件類型蝇裤,File(文件)廷支、Image频鉴、Media(視頻、音頻等媒體文件)酥泞、PDF 等砚殿。
擴(kuò)展類的 Workflow 有 Accepts 設(shè)置項(xiàng),用于限定接受的數(shù)據(jù)類型芝囤,這里的許多類型和 Contact(聯(lián)系人)一樣似炎,由多種基本的數(shù)據(jù)類型組合而成,我們可以用 View Content Graph 查看它們的組成結(jié)構(gòu)悯姊。
正如前文所說(shuō)羡藐,Workflow 要區(qū)分?jǐn)?shù)據(jù)類型是因?yàn)椋?dāng)你輸入「天哪悯许!這么超值」仆嗦,它就不應(yīng)該試圖將這段話折算成人民幣。同樣先壕,你應(yīng)該知道瘩扼,用黃油相機(jī)給照片加的字,用 Get Text from Input 是弄不出來(lái)的垃僚。
許多動(dòng)作只能操作特定的數(shù)據(jù)類型集绰,不過(guò),基本的類型之間可以轉(zhuǎn)換谆棺。
在「我有 100 大洋」這句話中栽燕,「100」是文本而不是數(shù)字,用它進(jìn)行運(yùn)算改淑,必須先把「100」單獨(dú)抽出來(lái)碍岔,再用 Number 動(dòng)作轉(zhuǎn)換成數(shù)字;在「2017 年 12 月 12 日是我破產(chǎn)的日子」這句話中朵夏,「2017 年 12 月 12 日」必須用 Date 動(dòng)作轉(zhuǎn)換才能被 Workflow 視為日期蔼啦。
-
數(shù)據(jù)傳遞
許多動(dòng)作都涉及數(shù)據(jù)的操作和轉(zhuǎn)換,我們?cè)趧?dòng)作列表中點(diǎn)擊展開某個(gè)動(dòng)作仰猖,可以看到相關(guān)資料询吴。
如圖所見,Make HTML from Rich Text 動(dòng)作只接受 Rich Text 類型的數(shù)據(jù)亮元,并向后輸出 HTML 源碼(實(shí)際是 Text 類型)猛计。
無(wú)論是手動(dòng)輸入還是插件讀取,數(shù)據(jù)將被某些動(dòng)作卡片依次加工爆捞,不停向后傳遞奉瘤。在支付寶快捷跳轉(zhuǎn)的 Workflow 中,Choose from List 動(dòng)作將詞典中被選中的代碼遞給了 URL。
有些動(dòng)作不會(huì)對(duì)數(shù)據(jù)有任何改動(dòng)(你可以看到它們的說(shuō)明資料中寫著「Result: The input」)盗温,比如 Set Variable藕赞,它只是保存當(dāng)前數(shù)據(jù),以便之后取用卖局;而有些動(dòng)作會(huì)截?cái)嘀暗臄?shù)據(jù)傳遞斧蜕,比如 Get Variable。
運(yùn)用 Set Variable 和 Get Variable 組合砚偶,數(shù)據(jù)可以被“恢復(fù)”批销,動(dòng)作卡片讀取的數(shù)據(jù)不再限于“上一步”。前文搜索引擎的例子說(shuō)到染坯,Count 向后傳遞的是數(shù)值均芽,這時(shí)就需要用 Set Variable 保存內(nèi)容,之后再用 Get Variable 重新讀取单鹿。
Workflow 還支持「魔法變量」掀宋,讓動(dòng)作卡片直接讀取前面某個(gè)卡片的輸出結(jié)果,這省掉了大量使用 Set Variable 和 Get Variable 組合的必要仲锄。
#4 Scripting
在 12 個(gè)動(dòng)作分類中劲妙,Scripting 是比較特殊的一個(gè),里面的動(dòng)作用于:
- 存取變量儒喊;
- 統(tǒng)計(jì)和運(yùn)算是趴;
- 讀寫詞典和列表;
- 讀寫數(shù)據(jù)澄惊、設(shè)備的屬性;
- 控制 Workflow 的流程富雅;
- 通知交互掸驱;
- ……
一般情況下,Scripting 中的動(dòng)作跟功能目標(biāo)無(wú)關(guān)没佑,所以不會(huì)出現(xiàn)在核心步驟中毕贼,但它在將 Workflow 補(bǔ)充完整的階段至關(guān)重要。
Workflow 被稱為流程(Flow)蛤奢,是因?yàn)樗軐?shí)現(xiàn)條件判斷和運(yùn)行分支鬼癣,而相關(guān)的動(dòng)作都位于 Scripting 分類中。
-
Ask for Input 和 Ask When Run
兩者是用得比較多的動(dòng)作/參數(shù)啤贩,當(dāng) Workflow 無(wú)法自動(dòng)獲得必要的數(shù)據(jù)待秃,需要我們手動(dòng)提供,這時(shí)就必須用到它們痹屹。
-
If -(Otherwise)- End If
這個(gè)動(dòng)作是 Workflow 實(shí)現(xiàn)條件判斷的關(guān)鍵章郁。條件被滿足時(shí)執(zhí)行 If 部分,跳過(guò) Otherwise 部分,到 End If 重新回到無(wú)條件執(zhí)行的狀態(tài)暖庄;反之聊替,條件不被滿足時(shí)跳過(guò) If 部分而執(zhí)行 Otherwise 部分。
如果只需要管條件被滿足的情況培廓,Otherwise 下沒有要執(zhí)行的動(dòng)作惹悄,則可以點(diǎn)它右側(cè)的「X」號(hào)刪掉。刪除之后想找回來(lái)肩钠,可以點(diǎn) If 右側(cè)的齒輪圖標(biāo)泣港,在彈出的窗口中點(diǎn) Put Back "Otherwise"。
很遺憾 Workflow App 不支持 Case蔬将,這導(dǎo)致條件復(fù)雜時(shí)只能用 If 層層相套爷速。
-
List 和 Dictionary
兩者都是數(shù)據(jù)列表,后跟 Choose from List 都可以顯示選單霞怀。但通過(guò)前文支付寶的 Workflow 可以看到它們的不同惫东,Dictionary 的各項(xiàng)數(shù)據(jù)都有關(guān)鍵詞和實(shí)際值兩部分(就像詞典的每個(gè)詞條有詞語(yǔ)和解釋兩部分),當(dāng)用 Choose from List 選擇“詞典”里的項(xiàng)目時(shí)毙石,向后傳遞的只是實(shí)際值廉沮,不包括關(guān)鍵詞。
利用無(wú)窮的外部接口——公開 API
Workflow App 內(nèi)置的動(dòng)作有名為 App 的分類徐矩,封裝了許多第三方 App 的 URL Schemes滞时,但是前面說(shuō)到的微信、支付寶滤灯、Vert坪稽,以及大量第三方 App 所提供的 URL Schemes 都不在其中。
這很正常鳞骤,作者不可能把大量的精力用在打包 URL Schemes 這件事件上窒百。那些外在的 URL Schemes,我們可以通過(guò) Web 分類下的 URL 和 Open URLs 動(dòng)作調(diào)用豫尽,前面支付寶和 Vert 的 Workflow 就是這么做的篙梢。
除了調(diào)用 URL Schemes,利用 URL 和 Get Contents of URL 動(dòng)作組合美旧,我們還可以調(diào)用在線接口渤滞,無(wú)限擴(kuò)充功能。
許多大型網(wǎng)站會(huì)提供公開接口榴嗅,以便第三方開發(fā)者接入妄呕,也有一些小型的、專門提供 API 服務(wù)的網(wǎng)站嗽测。
大型網(wǎng)站一般會(huì)用專門的開發(fā)平臺(tái)來(lái)提供文檔和示例趴腋,入口可以在網(wǎng)頁(yè)頂部或底部的導(dǎo)航菜單中找到。
我們也可以通過(guò)搜索引擎用網(wǎng)站名加「開發(fā)平臺(tái)」、「API」等關(guān)鍵字眼直接搜索到相應(yīng)的頁(yè)面优炬。
網(wǎng)上也有專門的 API 商店颁井,專門匯聚各方服務(wù)商提供的 API 接口:
- 聚合數(shù)據(jù):https://www.juhe.cn
- 百度 API Store:http://apistore.baidu.com
例 1:在線分詞
錘子科技在 2016 年為自有的系統(tǒng)加入了「Big Bang(大爆炸)」功能,其別致的交互受到了大量用戶的追捧蠢护。
「Big Bang」可以獲取用戶按壓的文字片斷(如果用戶按壓的是圖片中的文字,則先調(diào)用 OCR API 來(lái)識(shí)別出文字)葵硕,然后調(diào)用分詞 API 來(lái)顯示詞語(yǔ)列表眉抬。
中文分詞是機(jī)器實(shí)現(xiàn)中文語(yǔ)義識(shí)別的基礎(chǔ),中文語(yǔ)義識(shí)別可用于機(jī)器翻譯和中文人機(jī)自然語(yǔ)言交互懈凹。Siri 等各種語(yǔ)音助手能和我們交談蜀变,可能背后就使用了這些技術(shù)。
利用網(wǎng)上的 API介评,我們同樣可以實(shí)現(xiàn)分詞的功能(當(dāng)然库北,「Big Bang」有系統(tǒng)級(jí)的支持,可以在任意界面即時(shí)彈出们陆,這點(diǎn)是 Workflow 不可能做到的)寒瓦。百度搜索「分詞 API」,可以看到許多強(qiáng)大的中文語(yǔ)義平臺(tái)坪仇,比如 BosonNLP杂腰、 哈工大語(yǔ)言云、NLPIR 等椅文。為方便練手喂很,我們選調(diào)用起來(lái)最簡(jiǎn)單的 PullWord。
☆ 第一步皆刺,查詢 API 資料
在 http://api.pullword.com 可以查到 API 的使用說(shuō)明:
- 文本的輸入必須使用 UTF8 編碼少辣;
- 請(qǐng)求方式支持 Get 和 Post 兩種;
- Source 參數(shù)用于填寫文字片斷芹橡;
- Param1 參數(shù)用于指定分詞的嚴(yán)格性,可填 0~1 之間的值(如 0.5)望伦,為 0 時(shí)最寬松林说,為 1 時(shí)最嚴(yán)謹(jǐn);
- Param2 參數(shù)用于切換模式屯伞,為 0 時(shí)關(guān)閉調(diào)試腿箩,為 1 時(shí)顯示每個(gè)詞對(duì)應(yīng)的劃分合理程度。
因?yàn)轫?yè)面上特別注明劣摇,超過(guò) 30 個(gè)漢字的分詞請(qǐng)求珠移,用 Post 方法會(huì)低效且出錯(cuò),所以我們使用 Get 方法。在使用 Get 方法時(shí)钧惧,Get Contents of URL 動(dòng)作不需要理會(huì) Advanced 設(shè)置暇韧,保持默認(rèn)即可。
通過(guò)頁(yè)面上的「點(diǎn)擊使用 Get 方式」鏈接可以得到 API 的格式:
http://api.pullword.com/get.php?source=清華大學(xué)是好學(xué)校¶m1=0¶m2=1
運(yùn)行結(jié)果:
清華:0.604942 清華大學(xué):1 華大:0.068537 大學(xué):0.949906 好學(xué):0.659566 學(xué)校:0.936925
☆ 第二步浓瞪,拼裝 Workflow
現(xiàn)在可以開始拼裝了懈玻。新建 Workflow,將名稱設(shè)為「分詞」乾颁,為了方便使用涂乌,設(shè)為通知中心插件和分享面板擴(kuò)展,接受的數(shù)據(jù)類型僅選擇 Text英岭。
先把 Workflow 前半段寫出來(lái):
上圖 URL 動(dòng)作里的 API 顯示不全湾盒,我將后面參數(shù)的值分別設(shè)為 1 和 0。
試著運(yùn)行 Workflow诅妹,在 Quick Look 里看到罚勾,返回的結(jié)果是用空格相間的詞語(yǔ)。我們根據(jù)這個(gè)返回結(jié)果補(bǔ)完 Workflow 的剩余部分漾唉。
測(cè)試完畢刪掉 Quick Look 動(dòng)作荧库。
說(shuō)明:
- Split Text:以空格(Space)為界將返回結(jié)果分割為詞語(yǔ)列表(List);
- Choose from List:顯示選單赵刑;
- Copy to Clipboard:將選擇的項(xiàng)目(詞語(yǔ))復(fù)制到剪貼板分衫。
再次試用查看運(yùn)行情況:
咦,怎么選單最后有一項(xiàng)「Text」般此?并且選擇不同文段反復(fù)試用蚪战,選單最后一項(xiàng)總是「Text」,即使文中并沒有這個(gè)單詞铐懊,仍然會(huì)是這個(gè)結(jié)果邀桑。
☆ 第三步,糾錯(cuò)
在 Get Contents of URL 后重新添加 Quick Look 動(dòng)作科乎,再次運(yùn)行壁畸,在查看器中長(zhǎng)按并全選,此時(shí)發(fā)現(xiàn)最后一個(gè)詞語(yǔ)后面還有一個(gè)空格茅茂。
因?yàn)?Split Text 用空格分項(xiàng)捏萍,這導(dǎo)致列表最后有一個(gè)空項(xiàng)。怎樣把列表最后的這個(gè)空項(xiàng)去掉呢空闲?用 Replace Text 動(dòng)作可以做到令杈。
Replace Text 的設(shè)置說(shuō)明:
-
Find Text:要查找的文本。
這里的
\s*$
是正則表達(dá)式碴倾,\s
匹配空白字符逗噩,包括空格掉丽、制表符、換頁(yè)符异雁;*
表示匹配任意個(gè)捶障;$
匹配文本結(jié)尾的位置。即\s*$
匹配文本結(jié)尾的任意個(gè)空白字符片迅。 -
Replace With:替換為……
因?yàn)槭且獎(jiǎng)h除文段尾部的空格残邀,所以這里留空。
-
Case Sensitive:區(qū)分大小寫柑蛇。
空格不存在大小寫芥挣,這里是開是關(guān)無(wú)所謂。
-
Regular Expression:正則表達(dá)式耻台。
必須打開這個(gè)開關(guān)空免,上面 Find Text 項(xiàng)才可以使用正則表達(dá)式。
例 2:掃碼查書
PullWord 的分詞 API 直接返回文本盆耽,而豆瓣圖書 API 返回的是 JSON 格式蹋砚,我們用它做掃碼查書的 Workflow 來(lái)進(jìn)一步了解返回?cái)?shù)據(jù)的處理。
☆ 第一步摄杂,查詢 API 資料
在豆瓣 API v2 和豆瓣圖書 API v2 的頁(yè)面查看相關(guān)說(shuō)明:
-
API 的返回格式:數(shù)據(jù)返回格式統(tǒng)一使用 JSON坝咐。
-
成功時(shí)返回查詢到的數(shù)據(jù);
{ "rating":{ "max":10, "numRaters":2538, "average":"9.3", "min":0 }, ... }
-
失敗時(shí)返回錯(cuò)誤碼析恢。
{ "msg":"book_not_found", "code":6000, "request":"GET \/v2\/book\/isbn\/:9887301215692" }
錯(cuò)誤碼列表可以在豆瓣圖書 API v2 頁(yè)面上看到墨坚,稍有點(diǎn)長(zhǎng)這里就不轉(zhuǎn)貼了。
-
-
「根據(jù) ISBN 獲取圖書信息」API 的用法:
- 請(qǐng)求方式為 Get
- 格式為 https://api.douban.com/v2/book/:id
☆ 第二步映挂,拼裝 Workflow
因?yàn)槭菕叽a獲得 ISBN 號(hào)碼泽篮,所以 Workflow 的類型選擇通知中心插件類。不像分享面板擴(kuò)展需要做判斷柑船,Workflow 的前半段簡(jiǎn)單了很多:
接下來(lái)處理返回的數(shù)據(jù)帽撑。API 返回的是 JSON 格式,我們用 Get Dictionary from Input 可以將其轉(zhuǎn)換為詞典鞍时,然后再用 Get Dictionary Value 獲得不同關(guān)鍵詞的值亏拉。
首先用 Get Dictionary Value 獲得 msg 或 code 的值,如果返回這兩個(gè)值逆巍,則表示請(qǐng)求失敗及塘,Workflow 在彈出相關(guān)提示后結(jié)束運(yùn)行。
為了測(cè)試 API 請(qǐng)求失敗的情況蒸苇,先把 Scan QR/Bar Code 動(dòng)作刪掉磷蛹,并把 URL 最后的 ISBN 設(shè)為固定的 12345吮旅。
運(yùn)行一下看看:
接下來(lái)處理 API 請(qǐng)求成功時(shí)的返回?cái)?shù)據(jù)溪烤,核心依然是用 Get Dictionary Value 獲得關(guān)鍵詞的值味咳。
有一點(diǎn)需要留意,當(dāng) JSON 的層級(jí)較多時(shí)(從上面可以看到 rating 下面還有分項(xiàng))檬嘀,轉(zhuǎn)換得到的也會(huì)是多層的詞典(即詞典里包含詞典)槽驶,這時(shí)需要遞次向內(nèi)層取值。
比如要獲得 rating 下 average 的值鸳兽,得先用 Get Dictionary Value 獲得 rating 的值(又是一個(gè)詞典)掂铐,再用 Get Dictionary Value 獲得 average 的值。
為了在 End If 之后重新讀取返回的數(shù)據(jù)揍异,需要在 Get Contents of Input 和 Get Dictionary from Input 后面用 Set Variable 將詞典保存起來(lái)全陨,然后在 End If 后用 Get Variable 重新讀取。僅作示范衷掷,剩余部分就簡(jiǎn)單處理了:
通過(guò)分詞和掃碼查書兩個(gè)例子辱姨,我們掌握了通過(guò) Get Contents of URL 調(diào)用在線 API 的基本方法。
接下來(lái)說(shuō)明一下 Get Contents of URL 內(nèi) Advanced 的設(shè)置方法戚嗅。Method 指請(qǐng)求方式雨涛,以 Get、Post 居多懦胞;使用 Post 方式可以遞交 JSON替久、表單及文件數(shù)據(jù)。
運(yùn)用網(wǎng)絡(luò)調(diào)試工具躏尉,我們可以查獲網(wǎng)站的一些接口蚯根,使原本需要手動(dòng)完成的操作被自動(dòng)化,比如自動(dòng)登錄某個(gè)網(wǎng)站簽到醇份,或檢查最新動(dòng)態(tài)稼锅。
我們還可以監(jiān)測(cè)云音樂的客戶端,通過(guò)模擬它的請(qǐng)求行為來(lái)下載其中的 MV僚纷。
這些就需要自己嘗試和摸索了矩距。