這可能是我用過的最強大 API
摘要:一個強大的 API 介面。
今天要說的這個介面,之所以稱為「強大」,因為它返回的內容裡蘊含了未知的巨大能量,大到可以輕鬆毀滅宇宙 N 次……
沒錯,這就是 Marvel 向開發者開放的 API。
官網地址:
https://developer.marvel.com/
資料涵蓋的內容主要是 Marvel 相關的漫畫作品資訊,包含:
1491 個角色
43759 本漫畫
6200 個創作者
10713 個系列
96740 個故事
75 個事件
以及這幾樣資料之間的相互關聯關係。比如你可以通過一個角色查到其所出場的事件,或者一個創作者所參與過的角色。
我做了一個簡單的小演示,可通過名字查詢相關的角色:
以及通過角色 ID 查詢其出現的漫畫:
Marvel API 不是完全公開訪問,需要先申請,不過沒有任何門檻(只要看得懂英文)。使用介面時,常規操作是按照官方提供的方式,將申請獲得的公鑰、金鑰加上時間戳進行 MD5 加密,作為許可權的驗證放在引數裡,通過 GET 方式進行請求(可以用 requests)。
而我這裡用了一個第三方封裝好的 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 來說要複雜一些,主要是許可權認證的部分。另外,在使用時還有一些要求,如果你之後將作品對外展示,請務必注意:
請求上限 1000次/天(但在我的個人頁面上看到是 3000),並且需要設定請求來源網址(referrer)。建議通過自建快取,以減少請求量
需要在所有用到介面資料的頁面上標註 "Data provided by Marvel. © 2014 Marvel"
需提供到 Marvel 官網的反鏈(http://marvel.com)
返回介面裡的圖片 URL 不是直接可訪問的,需新增上所需圖片尺寸和檔案型別,拼出完整路徑
最後,感興趣的話可以去體驗下:
https://gitee.com/crossin/snippet/tree/master/marvel_api
本文轉自 Crossin的程式設計教室,歡迎關注:
相關文章
- 如何優雅的設計RESTful API?這是我看過講的最清晰的文章!RESTAPI
- [Android開源]:EasyGuideLayer: 這可能是最簡單、靈活、強大的頁面蒙層元件了!AndroidGUIIDE元件
- 這可能是你看過最詳細的NodeJS安裝配置教程NodeJS
- Laravel 主題模板功能擴充套件包, 這可能是我用過最優雅的 Laravel 主題擴充套件外掛了Laravel套件
- 這些強大的辦公軟體你用過幾個
- 前端魔法堂:可能是你見過最詳細的WebWorker實用指南前端Web
- 這可能是最詳細的Python檔案操作Python
- 這可能是最容易理解的 Go Mutex 原始碼剖析GoMutex原始碼
- Audio Unit: iOS中最底層最強大音訊控制APIiOS音訊API
- 《最強大腦》
- Laravel 中強大的tap你用過麼Laravel
- AI 可能是我們未能與外星文明取得聯絡的「大過濾器」AI過濾器
- 這可能是目前最透徹的Netty原理架構解析Netty架構
- 可能是你見過最完善的微前端解決方案前端
- 這次的Epic商城假日特賣,可能是你見過最猛的遊戲促銷活動遊戲
- 盤點最強最實用的Linux命令!Linux
- 誰動了我的 Linux?原來 history 可以這麼強大!Linux
- 這可能是最簡單易懂的機器學習入門機器學習
- GitHub 8000+ Star!這可能是最適合你的 TensorFlow 教程Github
- 節前超級乾貨福利放送!這可能是最實用的 Conan 管理依賴貼NaN
- 這是我見過的最詳細的Linux系統結構講解!Linux
- 25 個 Linux 下最炫酷又強大的命令列神器,你用過其中哪幾個呢?Linux命令列
- 【開源】這可能是封裝微信 API 最全的 .NET SDK 了封裝API
- 這可能是實現高斯模糊(毛玻璃)最簡單的庫了
- 這可能是你見過最好的工程師繪圖指北工程師繪圖
- 【日記】這可能是我遇到的最好的街舞老師(631 字)
- 我遇過的最難的Cookie問題Cookie
- 我遇過的最難的 Cookie 問題Cookie
- 工程師們看過來|這是我見過的IT圈最“潮”的產品釋出會了!工程師
- 當Bert遇上Keras:這可能是Bert最簡單的開啟姿勢Keras
- 一家“不差錢”的工作室做的獨立遊戲,這可能是我今年最看好的國產單機遊戲
- 這可能是你見過的最全的網路爬蟲總結爬蟲
- 這篇可能是你見過最全的滑鼠鍵盤監測
- Kafka原始碼篇 --- 可能是你看過最詳細的RecordAccumulator解讀Kafka原始碼
- 用最簡單的方式訓練史上最強ResNet-50,效能超過魔改結構的ResNeSt
- 我最喜歡的白版應用,AI加持的新功能開源!強烈推薦AI
- 【強烈推薦】可能是最適合你的 Java 學習路線和方法Java
- 這可能是,Flutter 中最“強悍”的記憶體洩漏檢測方案......Flutter記憶體