Files
message/gitea_api.md
root 59942acdbb docs: 添加 Gitea API 使用文档
记录了三个核心 API:
- 获取用户仓库列表
- 创建新仓库
- 上传通用包

包含完整的请求示例和响应数据结构。
2026-02-18 01:44:57 +08:00

261 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Gitea API 使用文档
## 概述
本文档总结了在本次项目中成功使用的 Gitea API。
**Gitea 地址:** http://gitea.xieyao.vip/
**用户名:** xieyao
**Token** 1ce08e3ca5d94641e0a243f374bba450f7639147
**API 版本:** v1
---
## 1. 获取用户仓库列表
### 接口信息
- **URL** `/api/v1/user/repos`
- **方法:** `GET`
- **认证:** `Authorization: token <token>`
### 请求示例
```bash
curl -s -H "Authorization: token 1ce08e3ca5d94641e0a243f374bba450f7639147" \
http://gitea.xieyao.vip/api/v1/user/repos
```
### 响应数据结构
```json
{
"id": 6,
"name": "control",
"full_name": "xieyao/control",
"description": "",
"private": true,
"language": "Dart",
"size": 651,
"html_url": "http://192.168.1.6:3000/xieyao/control",
"clone_url": "http://192.168.1.6:3000/xieyao/control.git",
"ssh_url": "git@192.168.1.6:xieyao/control.git",
"default_branch": "main",
"created_at": "2026-02-16T15:16:10Z",
"updated_at": "2026-02-16T15:18:07Z"
}
```
### 关键字段说明
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | number | 仓库 ID |
| `name` | string | 仓库名称 |
| `full_name` | string | 完整名称 (owner/name) |
| `description` | string | 仓库描述 |
| `private` | boolean | 是否私有 |
| `language` | string | 主要编程语言 |
| `size` | number | 仓库大小(字节) |
| `html_url` | string | 仓库访问地址 |
| `clone_url` | string | HTTP 克隆地址 |
| `ssh_url` | string | SSH 克隆地址 |
| `default_branch` | string | 默认分支 |
| `created_at` | string | 创建时间 (ISO 8601) |
| `updated_at` | string | 更新时间 (ISO 8601) |
---
## 2. 创建新仓库
### 接口信息
- **URL** `/api/v1/user/repos`
- **方法:** `POST`
- **认证:** `Authorization: token <token>`
- **Header** `Content-Type: application/json`
### 请求示例
```bash
curl -s -X POST -H "Authorization: token 1ce08e3ca5d94641e0a243f374bba450f7639147" \
-H "Content-Type: application/json" \
http://gitea.xieyao.vip/api/v1/user/repos \
-d '{
"name": "message",
"description": "汪汪的message仓库",
"auto_init": true,
"private": false
}'
```
### 请求参数
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `name` | string | 是 | 仓库名称 |
| `description` | string | 否 | 仓库描述 |
| `auto_init` | boolean | 否 | 是否自动初始化(创建 README |
| `private` | boolean | 否 | 是否私有 |
### 响应示例
```json
{
"id": 9,
"name": "message",
"full_name": "xieyao/message",
"description": "汪汪的message仓库",
"private": false,
"language": "",
"size": 23,
"html_url": "http://192.168.1.6:3000/xieyao/message",
"clone_url": "http://192.168.1.6:3000/xieyao/message.git",
"ssh_url": "git@192.168.1.6:xieyao/message.git",
"default_branch": "main",
"created_at": "2026-02-17T16:37:59Z",
"updated_at": "2026-02-17T16:38:00Z"
}
```
---
## 3. 上传通用包Generic Package Registry
### 接口信息
- **URL** `/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}`
- **方法:** `PUT`
- **认证:** `Basic Auth``token`
- **Content-Type** `application/octet-stream`
### 请求示例
```bash
curl -s -X PUT -u "xieyao:1ce08e3ca5d94641e0a243f374bba450f7639147" \
--upload-file devspec \
http://gitea.xieyao.vip/api/packages/xieyao/generic/devspec/1.0.0/devspec \
-w "\nHTTP Status: %{http_code}\n"
```
### 参数说明
| 参数 | 类型 | 说明 |
|------|------|------|
| `owner` | string | 用户名或组织名 |
| `package_name` | string | 包名称(只能包含小写字母、数字、点、减号、加号、下划线) |
| `package_version` | string | 版本号(不能为空,前后不能有空格) |
| `file_name` | string | 文件名(只能包含小写字母、数字、点、减号、加号、下划线) |
### 响应
**成功:**
```
HTTP/2 201
```
**失败:**
- `400 Bad Request`:参数无效
- `409 Conflict`:文件名已存在
- `401 Unauthorized`:认证失败
### 验证包是否成功上传
```bash
curl -s -k -u "xieyao:1ce08e3ca5d94641e0a243f374bba450f7639147" \
"http://gitea.xieyao.vip/api/packages/xieyao/generic/devspec/1.0.0/devspec" \
-o downloaded_file \
-w "\nHTTP Status: %{http_code}\n"
```
---
## 常用工具函数bash
### 获取仓库列表
```bash
get_repos() {
curl -s -H "Authorization: token $GITEA_TOKEN" \
$GITEA_API_URL/api/v1/user/repos
}
```
### 创建仓库
```bash
create_repo() {
local name="$1"
local description="${2:-}"
local auto_init="${3:-true}"
local private="${4:-false}"
curl -s -X POST -H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
$GITEA_API_URL/api/v1/user/repos \
-d "{
\"name\": \"$name\",
\"description\": \"$description\",
\"auto_init\": $auto_init,
\"private\": $private
}"
}
```
### 上传通用包
```bash
upload_generic_package() {
local owner="$1"
local package_name="$2"
local package_version="$3"
local file_path="$4"
curl -s -k -X PUT -u "$GITEA_USERNAME:$GITEA_TOKEN" \
--upload-file "$file_path" \
"$GITEA_API_URL/api/packages/$owner/generic/$package_name/$package_version/$(basename $file_path)" \
-w "\nHTTP Status: %{http_code}\n"
}
```
---
## 注意事项
1. **认证方式**
- 使用 Token 认证:`Authorization: token <token>`
- 使用 Basic Auth`-u username:token`
2. **HTTPS 证书**
- 如果 Gitea 使用自签名证书,需要添加 `-k` 参数跳过验证
3. **包命名规则**
- 包名和文件名只能包含小写字母、数字、点、减号、加号、下划线
- 版本号不能为空,前后不能有空格
4. **包关联**
- 上传包后,需要在 Web UI 中手动关联到仓库
- 访问http://gitea.xieyao.vip/xieyao/packages
- 选择仓库进行关联
5. **代理设置**
- 如果使用了代理,需要取消代理后再访问 Gitea
```bash
unset https_proxy all_proxy
```
---
## 测试环境
- **Gitea 服务器:** http://gitea.xieyao.vip/
- **API 版本:** v1
- **测试时间:** 2026-02-18
- **操作人:** Geliebte
---
## 更新日志
- **2026-02-18** - 初始版本,记录了三个核心 API 的使用方法