使用GitHub API上傳文件及GitHub做圖床

本文介紹GitHub API基礎及上傳文件到倉庫API,並應用API將GitHub作為圖床

GitHub API官方頁面

GitHub API版本

當前版本為v3,官方推薦在請求頭中顯示添加版本標識。

Accept: application/vnd.github.v3+json

Postman示例如圖:

api版本

請求認證

  • 基礎認證|Basic authentication

shell示例:

curl -u "username" //api.github.com

Postman示例如圖:

api認證

  • 令牌認證|OAuth2 token (sent in a header)

shell示例:

curl -H "Authorization: token OAUTH-TOKEN" //api.github.com

Postman示例如圖:

api token

主API,獲取所有API

請求API:

GET //api.github.com

這個API返回常見API

Postman示例如圖:

basic api response

公開倉庫查詢API

請求API:

GET //api.github.com/user/repos

header:

name value
Accept application/vnd.github.v3+json
Authorization token空格oauth_token

Postman示例如圖:

list repo

倉庫創建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示例如圖:

create repo

為倉庫上傳/更新文件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示例如圖:

upload file

從倉庫刪除文件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

setting

  • 點擊Developer settings

setting2

  • 點擊Personal access tokens

setting3

  • 點擊Generate new token,生成token並記錄

setting4

倉庫作為圖床

倉庫要想作為圖床,圖床的前提是文件內容能外鏈使用,需要將其作為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>

示例如圖:

repo index

  • 2 將此倉庫配置為GitHub Pages

相關配置可以參看多項目部署為同一個GitHub Pages

pages

開啟GitHub Pages成功後,當前倉庫文件就可通過GitHub Pages地址訪問,圖中示例為//dev2007.github.io/imgs

  • 3 將圖片上傳到倉庫中

{倉庫}/{路徑}/{文件名}

示例如圖:

repo img

  • 4 獲取圖片鏈接,使用鏈接

鏈接格式為://{Pages域名}/{倉庫}/{路徑}/{文件名}

示例地址://dev2007.github.io/imgs/myfolder/panda.png

示例如圖:

pages img

  • 5 使用自定義域名,配置好後Pages域名換為自定義域名即可

相關GitHub Pages配置域名,可參看用GitHub Pages搭建部落格(五)

  • 6 CDN加速

可以使用Vercel進行加速,可參看用GitHub Pages搭建部落格(六)

Demo圖床

最後是我搭建的一個Demo圖床,可以訪問,後續還將添加網頁圖片上傳功能,歡迎查看:圖床

歡迎關注我的部落格:阿嗚的邊城

歡迎關注我的公眾號:阿嗚的編程

題圖來源 :unsplash

Tags: