GitLab API学习总结
最新更新时间:2021年07月27日16:05:07《猛戳-查看我的博客地图-总有你意想不到的惊喜》文章背景:最近在开发一个需求,在一个PC端中台系统上(前端是antD搭建的React项目+后端是eggJS搭建的Node项目),前端交互点击一个按钮,需要在Node服务器上完成一系列动作:在GitLab上创建一个新仓库 -> 在Node服务器上动态初始化一个react项目 -> 改写这个
·
最新更新时间:2021年07月27日16:05:07
《猛戳-查看我的博客地图-总有你意想不到的惊喜》
文章背景:最近在开发一个需求,在一个PC端中台系统上(前端是antD搭建的React项目+后端是eggJS搭建的Node项目),前端交互点击一个按钮,需要在Node服务器上完成一系列动作:在GitLab上创建一个新仓库 -> 在Node服务器上动态初始化一个react项目 -> 改写这个项目中的一写文件内容 -> 将这个react项目push到新仓库
本文内容:在进行代码管理时,通常用到的是gitlab,但大多数人用的都是界面化操作,比如:创建仓库、查询仓库、修改仓库信息,实际上gitlab也可以通过发送接口请求的方式进行操作,本文主要介绍如何调用gitlab的API接口、不同接口的含义
预备知识
接口路径
- gitlab API主域名和接口前置路径
//主域名
let host = "https://gitlab.***.com";// ***-公司的gitlab的主域名
//接口前置路径
let mainPath = "/api/v3";
注意:
v3
有可能是v2、v4…,每个公司的不一样
API地址列表
- 从帮助(http://gitlab.***.com/help)进入
- 直接从地址(http://gitlab.***.com/help/api/README.md)进入
private_token
介绍
- Gitlab的所有API都需要提供private_token参数进行用户身份认,如果没有提供或者提供的private_token不合法,API将会返回401错误码
- private_token是用来代表用户身份的字符串,和用户是一一对应的关系,http请求中包含这个就可以免输入用户名和密码。
获取
- 方案一:查看帐号设置(Profile Settings -> Account)
- 方案二:通过API
接口路径: /session
postman的方式如下
服务发请求的方式如下
const child_process = require("child_process");
let curl = `curl --request POST --data "login=wanshaobo&email=***&password=***" ${host}${mainPath}/session`;
let buffer = child_process.execSync(curl);//发送同步请求
let resultJson = buffer && buffer.toString();
let result = JSON.parse(resultJson);
//result结果
console.log(result.private_token)
{
"name": "万少博",
"username": "wanshaobo",
"id": 1,
"state": "active",
"avatar_url": "https://work.***.com/photo/1.jpg",
"web_url": "http://gitlab.***.com/u/wanshaobo",
"email": "wanshaobo@***.com",
"private_token": "***"
}
注意:
git config --global user.name #获取用户名
git config --global user.email #获取用户邮箱
http请求方式
- gitlab api限制了请求的方法,一般查询请求是GET,创建请求是POST,修改请求是PUT,删除请求是DELETE,方法写错了api将返回405 Method Not Allowed错误。
- 分页查询需要携带参数per_page和page
`curl --request GET --data "private_token=***&per_page=10&page=1" ${host}${mainPath}/projects/owned`;
项目中用到的API
获取自己名下的所有项目
- /projects/owned
let curl = `curl --request GET --data "private_token=***" ${host}${mainPath}/projects/owned`;
获取命名空间
- /namespaces
let curl = `curl --request GET --data "private_token=***" ${host}${mainPath}/namespaces`;
创建仓库
- /projects
let curl = `curl --request POST --data "visibility_level=0&private_token=***&namespace_id=***" ${host}${mainPath}/projects?name=new_demo`;
注意:参数
visibility_level
是仓库的访问权限,可以设置0,10,20
API大全
- Users 用户
接口 | 类型 | 返回值 |
---|---|---|
/users | GET | 用户列表 |
/users/:id | GET | 用户详情 |
/users | POST | 创建用户 |
- Session 会话
接口 | 类型 | 返回值 |
---|---|---|
/session | POST | 用户帐号详情 |
- Projects including setting Webhooks
- Project Snippets
- Services
- Repositories 项目仓库
- Repository Files 仓库代码文件
- Commits 提交
- Tags
- Branches 分支
- Merge Requests 代码合并
- Issues
- Labels
- Milestones
- Notes (comments) 注释
- Deploy Keys
- System Hooks
- Groups 群组
接口 | 类型 | 返回值 |
---|---|---|
/groups | GET | Get a list of groups |
/groups/:id/projects | GET | Get a list of projects in this group |
- Namespaces 命名空间
接口 | 类型 | 返回值 |
---|---|---|
/namespaces | GET | Get a list of namespaces |
/namespaces?search=foobar | GET | Get all namespaces that match your string in their name or path |
- Settings
- Keys
参考资料
- 十分钟熟知Gitlab API
- gitlab API官网
- gitbeaker官网 将 gitlab api 封装成了各种方法以方便调用
- Gitlab访问权限、角色的工程权限和组权限
感谢阅读,欢迎评论^-^
打赏我吧^-^
更多推荐
已为社区贡献1条内容
所有评论(0)