這可能是我用過的最強大 API

wade1203發表於2019-04-01

摘要:一個強大的 API 介面。

今天要說的這個介面,之所以稱為「強大」,因為它返回的內容裡蘊含了未知的巨大能量,大到可以輕鬆毀滅宇宙 N 次……

沒錯,這就是 Marvel 向開發者開放的 API

640?wx_fmt=png
img

官網地址:

https://developer.marvel.com/

資料涵蓋的內容主要是 Marvel 相關的漫畫作品資訊,包含:

  • 1491 個角色

  • 43759 本漫畫

  • 6200 個創作者

  • 10713 個系列

  • 96740 個故事

  • 75 個事件

以及這幾樣資料之間的相互關聯關係。比如你可以通過一個角色查到其所出場的事件,或者一個創作者所參與過的角色。

我做了一個簡單的小演示,可通過名字查詢相關的角色:

640?wx_fmt=jpeg
img

以及通過角色 ID 查詢其出現的漫畫:

640?wx_fmt=png
img

Marvel API 不是完全公開訪問,需要先申請,不過沒有任何門檻(只要看得懂英文)。使用介面時,常規操作是按照官方提供的方式,將申請獲得的公鑰、金鑰加上時間戳進行 MD5 加密,作為許可權的驗證放在引數裡,通過 GET 方式進行請求(可以用 requests)。

640?wx_fmt=png
img

而我這裡用了一個第三方封裝好的 Python 庫 marvel,省了不少工作,所以核心程式碼很簡單:

1import marvel
2from IPython.display import Image, HTML, display
3PUBLIC_KEY = '你的公鑰'
4PRIVATE_KEY = '你的私鑰'
5m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
6characters = m.characters
7name = input('請輸入要查詢的英雄(英文,可只輸入開頭):')
8print('搜尋中...')
9all_characters = characters.all(nameStartsWith=name)

第三方庫地址:

https://pypi.org/project/marvel/

Marvel 的這個 API,我覺得是個非常好的練手工具。作為一個學習者,你可以從使用中學到:

  • 公鑰、私鑰、MD5加密的使用(介面許可權驗證)

  • API的呼叫,引數傳遞,JSON返回資料的處理

  • 多維度資料的整理分析

  • 還有,英文文件的閱讀!

讓我有點遺憾的是,資料中並沒有太多英雄角色相關的資料,不然就更有意思了。

對於這個介面的應用,我有幾個思路供參考:

  • 做一個愛好者網站或者小程式,對資料提供檢索和整理展示

  • 資料分析,看看哪些角色最受歡迎,哪個作者最勤奮,角色之間的相互關係等

  • 小遊戲,比如集卡之類。(當然,非商業的)

早前我也推薦過豆瓣的 API,不過豆瓣現已把開發者頁面下線,無法檢視具體介面說明,之後會不會對外關閉也很難說了。Marvel API 相比豆瓣 API 來說要複雜一些,主要是許可權認證的部分。另外,在使用時還有一些要求,如果你之後將作品對外展示,請務必注意:

  1. 請求上限 1000次/天(但在我的個人頁面上看到是 3000),並且需要設定請求來源網址(referrer)。建議通過自建快取,以減少請求量

  2. 需要在所有用到介面資料的頁面上標註 "Data provided by Marvel. © 2014 Marvel"

  3. 需提供到 Marvel 官網的反鏈(http://marvel.com

  4. 返回介面裡的圖片 URL 不是直接可訪問的,需新增上所需圖片尺寸和檔案型別,拼出完整路徑


最後,感興趣的話可以去體驗下:

https://gitee.com/crossin/snippet/tree/master/marvel_api

本文轉自 Crossin的程式設計教室,歡迎關注:

640?wx_fmt=jpeg


相關文章