在Python中调用Gitee API实现对仓库的管理
记录一下调用Gitee API的经历
HTTP的请求方法
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 用于请求服务器发送某个资源。GET 请求不应该对服务器上的资源做出任何更改,并且应该是幂等的(即多次重复的请求应该产生相同的结果)。例如,当你在浏览器中输入 URL 地址时,浏览器会发送一个 GET 请求来获取该 URL 对应的网页。 |
2 | HEAD | 类类似于 GET 请求,但服务器不返回请求的资源主体,只返回响应头。HEAD 请求通常用于获取资源的元信息,如资源的大小、类型等,而不需要获取资源的实际内容。 |
3 | POST | 用于向服务器提交数据,通常用于提交表单或上传文件。POST 请求可能会导致服务器上的状态更改,并且不一定是幂等的。例如,在提交注册表单时,浏览器通常会发送一个 POST 请求,将用户提供的信息发送到服务器进行处理。 |
4 | PUT | 用于向服务器上传资源,通常用于更新已存在的资源或创建新的资源。PUT 请求应该是幂等的,即多次执行相同的 PUT 请求应该产生相同的结果。 |
5 | DELETE | 用于请求服务器删除指定的资源。DELETE 请求应该是幂等的,即多次执行相同的 DELETE 请求应该产生相同的结果。 |
6 | CONNECT | 用于建立到服务器上指定端口的隧道,通常用于代理服务器。 |
7 | OPTIONS | 用于请求服务器返回支持的 HTTP 方法和其他选项。例如,客户端可以发送 OPTIONS 请求来确定服务器支持哪些 CORS(跨域资源共享)策略。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 用于在请求-响应链上的每个节点获取传输路径。TRACE 请求通常用于调试和测试,以查看请求在经过各种代理服务器和中间件时如何被修改。 |
Python requests模块简介
Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。
requests 方法如下表:
方法 | 描述 |
---|---|
delete(url, args) | 发送 DELETE 请求到指定 url |
get(url, params, args) | 发送 GET 请求到指定 url |
head(url, args) | 发送 HEAD 请求到指定 url |
patch(url, data, args) | 发送 PATCH 请求到指定 url |
post(url, data, json, args) | 发送 POST 请求到指定 url |
put(url, data, args) | 发送 PUT 请求到指定 url |
request(method, url, args) | 向指定的 url 发送指定的请求方法 |
一个example
# 导入 requests 包
import requests
kw = {'s':'python 教程'}
# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("https://www.runoob.com/", params = kw, headers = headers)
# 查看响应状态码
print (response.status_code)
# 查看响应头部字符编码
print (response.encoding)
# 查看完整url地址
print (response.url)
# 查看响应内容,response.text 返回的是Unicode格式的数据
print(response.text)
在Python中调用Gitee API
获取Gitee token(这里使用长期令牌)
在Gitee中选择 个人主页——个人设置——私人令牌
配置一个私人令牌 ,并记录获得的token
例子:清空仓库
在Gitee API文档中获取需要的Request URL
打开Gitee API文档,查找清空仓库这一功能,如下图
我们可以先填入对应内容先在该页面进行测试,如下图。
若返回的Response Code为204,则指令没有问题,然后我们复制Request URL即可。
编写Python代码
access_token = "access_token"#写入自己的token
user_name = "user_name"#写入自己的用户名
def clear_repository(repo_name):
headers = {
"Authorization": f"Bearer {access_token}"
}
url = f"https://gitee.com/api/v5/repos/{user_name}/{repo_name}/clear"
print(url)
#根据request请求的类型选择(如get,put,delete等)
response = requests.put(url, headers=headers)
if response.status_code == 204:
print(f"Repository '{repo_name}' clear successfully.")
else:
print(f"Failed to delete repository '{repo_name}'. Status code: {response.status_code}")
if __name__ == "__main__":
repo='pic'#仓库名
print(access_token)
print(user_name)
print(repo)
#delete_repository(repo)
clear_repository(repo)
删除仓库
import requests
# 在这里填入你的个人访问令牌
access_token = ""
user_name = ""
# 删除仓库
def delete_repository(repo_name):
headers = {
"Authorization": f"Bearer {access_token}"
}
url = f"https://gitee.com/api/v5/repos/{user_name}/{repo_name}"
print(url)
response = requests.delete(url, headers=headers)
if response.status_code == 204:
print(f"Repository '{repo_name}' deleted successfully.")
else:
print(f"Failed to delete repository '{repo_name}'. Status code: {response.status_code}")
if __name__ == "__main__":
repo='pic'
print(access_token)
print(user_name)
print(repo)
delete_repository(repo)