Gitee提供的API获取和更新私有仓库文件
🍓通过 Gitee 提供的 API 去更新和获取私有仓库的文件内容,您需要完成以下步骤:
1、获得 Gitee 的 Access Token
首先,需要获得 Gitee 的 Access Token
。在 Gitee 上登录并转到个人设置页面,在左侧导航栏中选择「开发者设置」
,然后点击「私人令牌」
创建一个新的 Access Token。
2、Gitee API 参数设置
私人令牌访问官方文档:Gitee Open API
使用您喜欢的 HTTP 库(比如 HttpClient)构建 HTTP 请求,访问 Gitee API。对于更新和获取文件,您需要使用下面两个 API:
获取文件内容:https://gitee.com/api/v5/repos/{owner}/{repo}/contents/{path}(HTTP GET 请求)
更新文件内容:https://gitee.com/api/v5/repos/{owner}/{repo}/contents/{path}(HTTP PUT 请求)
3、构建 HTTP 请求并获取文件内容
- 在构建 HTTP 请求时,需要指定以下信息:
Access Token
:使用 HTTP 请求头将 Access Token 传递给 API。仓库信息
:将 owner、repo 和 path 替换为您的仓库和文件路径。
-
对于获取文件内容,API 的响应是一个 JSON 对象,其中包含文件内容的 Base64 编码。
- Base64 解码可以使用 Convert.FromBase64String 方法。
-
对于更新文件内容,API 的请求体需要是一个 JSON 对象,其中包含以下信息:
message
:提交消息,必填。content
:文件内容的 Base64 编码。sha
:文件的 SHA 值,用于检查文件是否被其他人修改过。如果文件没有被修改过,可以将其设置为 null。
4、以下是一个获取和更新Gitee私有仓库文件内容的示例代码
using System;
using System.Net;
using System.Text;
using Newtonsoft.Json.Linq;
class Program
{
static void Main(string[] args)
{
string accessToken = "YOUR_ACCESS_TOKEN";
string owner = "YOUR_GIT_REPO_OWNER";
string repo = "YOUR_GIT_REPO_NAME";
string path = "YOUR_FILE_PATH";
// 获取文件内容
string getContentUrl = $"https://gitee.com/api/v5/repos/{owner}/{repo}/contents/{path}";
WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.Authorization, $"Bearer {accessToken}");
client.Headers.Add(HttpRequestHeader.Accept, "application/vnd.github.v3.raw");
string response = Encoding.UTF8.GetString(client.DownloadData(getContentUrl));
JObject contentObj = JObject.Parse(response);
string content = Encoding.UTF8.GetString(Convert.FromBase64String(contentObj["content"].ToString()));
Console.WriteLine(content);
// 更新文件内容
string updateContentUrl = getContentUrl;
string message = "Update file";
string fileContent = "New file content";
string base64Content = Convert.ToBase64String(Encoding.UTF8.GetBytes(fileContent));
string sha = contentObj["sha"].ToString();
string requestBody = $@"{{""message"":""{message}"",""content"":""{base64Content}"",""sha"":""{sha}""}}";
client.Headers.Clear();
client.Headers.Add(HttpRequestHeader.Authorization, $"Bearer {accessToken}");
client.Headers.Add(HttpRequestHeader.Accept, "application/vnd.github.v3+json");
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
client.UploadString(updateContentUrl, "PUT", requestBody);
}
}
在以上代码中,我添加了 Accept 请求头以获取原始文件内容(即非 Base64 编码的文件内容)。在更新文件内容时,我还添加了 Accept 请求头以指定 API 的版本(v3)以及 ContentType 请求头以指定请求体的格式。