layui url怎么获取api路径_java调用API操作GitLab

最近需要在一个WEB项目中集成GitLab,用到了GitLab的API操作,在网上找了很久都是说直接调用GitLab的Http接口,而且API官方只有javadoc没有其它说明文档,特别记录下,以备查询。这里采用Token的认证方式,因此需要先登陆GitLab新建一个Token,创建方式如下:

2c400ac9d3e2bbb1bf3183217a192233.png

GitLab创建Token认证登陆

创建完成以后,就可以在API中通过Token进行登陆并操作该GitLab服务了,以下是源码

package org.noka.gitlab.gitlab.service;import org.apache.commons.codec.binary.Base64;import org.gitlab.api.GitlabAPI;import org.gitlab.api.models.GitlabBranch;import org.gitlab.api.models.GitlabProject;import org.gitlab.api.models.GitlabRepositoryFile;import org.gitlab.api.models.GitlabSimpleRepositoryFile;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import java.util.List;/** ------------------------------------------------------------ * GitLab 操作服务 * 包含分支创建,获取分支列表,上传文件,下载文件 * 依赖于java-gitlab-api 4.1.1 * @author  xiefangjian@163.com * @version 1.0.0 ** ---------------------------------------------------------**/@Servicepublic class GitLabService {    private static Logger logger = LoggerFactory.getLogger(GitLabService.class);    @Value("${gitlab.token}")    private String token;           //GitLab Token,这里用gitlab的token连接,也可以用用户名和密码连接    @Value("${gitlab.url}")    private String url;             //GitLab 服务器地址    @Value("${gitlab.projectid}")    private String projectid;       //项目ID    /**     * 创建分支     * @param name 新分支的名称     * @param ref  分支来源     * @return 分支创建成功返回true,创建失败返回false     */    public boolean createBaranche(String name,String ref){        try {            GitlabAPI api = GitlabAPI.connect(url, token);//连接服务器            api.setConnectionTimeout(200);//设置连接超时            GitlabProject gp = api.getProject(projectid);//根据项目ID切换到指定项目的仓库            //以上部分代码也可以在spring中通过注解引入            api.createBranch(gp,name,ref);//在指定项目下创建分支            return true;//创建成功        }catch (Exception ex){            logger.error(ex.getMessage());        }        return false;//创建失败    }    /**     * 获取分支列表     * @return 成功时返回分支列表,失败返回null     */    public List getListBranches(){        try {            GitlabAPI api = GitlabAPI.connect(url, token);//连接服务器            api.setConnectionTimeout(200);//设置连接超时            GitlabProject gp = api.getProject(projectid);//根据项目ID切换到指定项目的仓库            return api.getBranches(gp);//获取所有分支        }catch (Exception ex){            logger.error(ex.getMessage());        }        return null;//获取失败时返回null    }    /**     * 下载文件     * @param path 文件路径     * @param ref  文件所在分支     * @return 成功返回文件内容,失败返回null     */    public byte[] getFile(String path,String ref){        try {            GitlabAPI api = GitlabAPI.connect(url, token);//连接服务器            api.setConnectionTimeout(200);//设置连接超时            GitlabProject gp = api.getProject(projectid);//根据项目ID切换到指定项目的仓库            GitlabRepositoryFile gfile = api.getRepositoryFile(gp,path,ref);//根据项目,路径,分支获取具体的文件内容            Base64 bs = new Base64();//Base64转换工具类,依赖于commons-codec 1.14            return bs.decode(gfile.getContent());//从GitLab上获取的文件是以Base64字符串形式返回的,需要转成byte[]        }catch (Exception ex){            logger.error(ex.getMessage());        }        return null;//失败返回null    }    /**     * 上传文件     * @param branch 需要上传到具体哪个分支     * @param path   文件在GitLab上的路径,可以有多级目录如/doc/man/等,如果目录不存在会自动创建     * @param msg    文件上传备注     * @param file   文件对象     * @return 成功返回true 失败返回false     */   public boolean upfile(String branch,String path,String msg,MultipartFile file){       try {           GitlabAPI api = GitlabAPI.connect(url, token);//连接服务器           api.setConnectionTimeout(200);//设置连接超时           GitlabProject gp = api.getProject(projectid);//根据项目ID切换到指定项目的仓库           Base64 bs = new Base64();//Base64转换工具类,依赖于commons-codec 1.14           String body = bs.encodeAsString(file.getBytes());//文件内容,GitLab只接受Base64字符串的文件内容,这里需要将文件转换成Base64字符串上传           try {               GitlabSimpleRepositoryFile gf = api.createRepositoryFile(gp, path+"/" + file.getOriginalFilename(), branch, msg, body);//上传文件           }catch (Exception es) {//文件存在               logger.error(path+"/" + file.getOriginalFilename()+"  所传文件已经存在,执行更新操作");               api.updateRepositoryFile(gp, path+"/" + file.getOriginalFilename(), branch, msg, body);//更新文件           }           return true;//上传成功       }catch (Exception ex){           logger.error(ex.getMessage());       }       return false;//上传失败   }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值