使用GitHub API上傳文件及GitHub做圖床
本文介紹GitHub API基礎及上傳文件到倉庫API,並應用API將GitHub作為圖床
GitHub API版本
當前版本為v3
,官方推薦在請求頭中顯示添加版本標識。
Accept: application/vnd.github.v3+json
Postman示例如圖:
請求認證
- 基礎認證|Basic authentication
shell示例:
curl -u "username" //api.github.com
Postman示例如圖:
- 令牌認證|OAuth2 token (sent in a header)
shell示例:
curl -H "Authorization: token OAUTH-TOKEN" //api.github.com
Postman示例如圖:
主API,獲取所有API
請求API:
GET //api.github.com
這個API返回常見API
Postman示例如圖:
公開倉庫查詢API
請求API:
GET //api.github.com/user/repos
header:
name | value |
---|---|
Accept | application/vnd.github.v3+json |
Authorization | token空格 oauth_token |
Postman示例如圖:
倉庫創建API
請求API:
POST //api.github.com/user/repos
headers:
-
Accept : application/vnd.github.v3+json
-
Authorization : token
空格
oauth_token|
請求體|Request body:
name,代表倉庫名,必須。其他的可選參數參看官方文檔
{
"name":"imgs"
}
Postman示例如圖:
為倉庫上傳/更新文件API
請求API:
PUT //api.github.com/repos/{user}/imgs/contents/{path}/{filename}
- user:倉庫所屬用戶名
- path:上傳文件存放的路徑,如果文件夾不存在,會自動創建
- filename:上傳的文件名稱
請求體|Request body:
{
"message": "提交說明",
"content": "base64編碼的文件內容",
"sha": "文件的blob sha"
}
content:文件內容的base64編碼後的字元串
sha:文件更新或刪除時必填,先用GET介面查詢文件資訊,可在響應體中獲取
Postman示例如圖:
從倉庫刪除文件API
請求API:
DELETE //api.github.com/repos/{user}/imgs/contents/{path}/{filename}
- user:倉庫所屬用戶名
- path:上傳文件存放的路徑,如果文件夾不存在,會自動創建
- filename:上傳的文件名稱
請求體|Request body:
{
"message": "提交說明",
"sha": "文件的blob sha"
}
sha:文件更新或刪除時必填,先用GET介面查詢文件資訊,可在響應體中獲取
token的生成
token需要在GitHub網站上右上角Settings
中去生成,生成後需要立即保存。
- 點擊
Settings
- 點擊
Developer settings
- 點擊
Personal access tokens
- 點擊
Generate new token
,生成token並記錄
倉庫作為圖床
倉庫要想作為圖床,圖床的前提是文件內容能外鏈使用,需要將其作為GitHub Pages才能實現。
將倉庫作為圖床的整體操作步驟如下:
- 1 創建一個倉庫,將添加一個index.html
由於我們要將此倉庫作為圖床,所以雖不需要靜態網站相關內容,但為了GitHub能將此倉庫識別為GitHub Pages,還是至少需要一個index.html在倉庫中。(當然,你也可以找尋一個靜態網站模板放進倉庫)
index.html示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width-device-width,initial-scale-1">
<title>Images</title>
</head>
<body></body>
</html>
示例如圖:
- 2 將此倉庫配置為GitHub Pages
相關配置可以參看多項目部署為同一個GitHub Pages
開啟GitHub Pages成功後,當前倉庫文件就可通過GitHub Pages地址訪問,圖中示例為//dev2007.github.io/imgs
- 3 將圖片上傳到倉庫中
{倉庫}/{路徑}/{文件名}
示例如圖:
- 4 獲取圖片鏈接,使用鏈接
鏈接格式為://{Pages域名}/{倉庫}/{路徑}/{文件名}
示例地址://dev2007.github.io/imgs/myfolder/panda.png
示例如圖:
- 5 使用自定義域名,配置好後
Pages域名
換為自定義域名即可
相關GitHub Pages配置域名,可參看用GitHub Pages搭建部落格(五)
- 6 CDN加速
可以使用Vercel進行加速,可參看用GitHub Pages搭建部落格(六)
Demo圖床
最後是我搭建的一個Demo圖床,可以訪問,後續還將添加網頁圖片上傳功能,歡迎查看:圖床
歡迎關注我的部落格:阿嗚的邊城
歡迎關注我的公眾號:阿嗚的編程
題圖來源 :unsplash