# JAVA 调用 GitLab API 方式

# 引言

​ 因为项目需求,想在另一套系统内修改 GitLab 上的数据,主要功能有【创建仓库,添加人员,删除人员,上传代码】。于是在网上找到了两个 SDK 的包分别是

java-gitlab-api gitlab4j-api,感觉两者并无优劣,都提供了非常优秀的使用文档:java-gitlab-api 文档 gitlab4j-api 文档。而本文主要讲述了 gitlab4j-api 的使用

# GitLab API

虽说最后用的是 SDK 包,但还是自己看着 GitLab API 用 SDK 包方法熟练点。因为 GitLab 的 API 文档写的看起来更舒服

网上 API 文档:https://docs.gitlab.com/ee/api/projects.html#project-visibility-level

自己项目中 API 文档:首先点击 Help ,选中 Integration and Automation 下的 GitLab API

image-20210105145025065

image-20210105145309735

# 如何使用 GitLab API

​ 调用 GitLab API 需要身份 token,在请求头 header 中以 key:PRIVATE-TOKEN,vlaue:你的 token 方式请求如下图文档

image-20210105150410525

# 如何申请 token

​ 通过个人的 settings 选择 Access Tokens 界面申请一个即可,但这是你本人的身份的 token,公司项目建议用管理员的

image-20210105150749762

所以在 JAVA 中可以使用 HttpClient 类等 HTTP 请求的方式去调用,竟然已经知道手动调用了。那就用 SDK 包吧

# 使用 gitlab4j-api

# pom.xml

<dependency>
    <groupId>org.gitlab4j</groupId>
    <artifactId>gitlab4j-api</artifactId>
    <version>4.15.7</version>
</dependency>

# 创建项目

GitLabApi gitLabApi = new GitLabApi("gitlab的url地址", "token值");
Project project1 = new Project().withName("仓库名称").withPath("仓库路径")
                .withDefaultBranch("分支名一般填master").withDescription("仓库描述").withNamespaceId("数字:组id");
try {
    Project project = gitLabApi.getProjectApi().createProject(project1);
} catch (GitLabApiException e) {
    e.printStackTrace();
}

# 上传代码

​ 上传代码我没有在 GitLab 上找到 API ,于是用来命令方式调用实现同步代码,详情可以参考 JAVA 如何调用系统命令

# 总结

​ 先说说我在这次开发过程中遇到问题和建议吧

  • 【问题】自己通过 HttpClient 类手动造轮子,后来才发现有这方面的 SDK 包(眼界过低,没有想到这方面)

  • 【建议】英语不好的朋友可以在个人 setting–>Preferences 上设置 GitLab 的中文版(API 那边不会变中文,但也舒服些)

  • 【建议】不论是 gitlab4j-api 还是 java-gitlab-api 的文档,参数方法都可以在 GitLab 上找到原型,对意思的理解可能更到位

  • 【建议】建议使用能翻译网页的插件方便阅读与使用

    总而言之这个技术是一次繁琐且简单的实践,路都有前人铺好,而我们应该走的更远。