好几年前写过一篇sonar api调用的文档,很多人看,但是当时写的比较简陋,很多小伙伴在下方留言,也答应过一些小伙伴些一篇示例,本文主要目的是一篇扫盲贴。
一、接口文档
要使用sonarqube的api接口,你首先要知道接口文档在哪里
我们打开任意一个sonarqube平台的页面,拉到最底端,这里有一个web接口的链接,点击进去,就能跳转到sonarqube的rest api文档
我们只需要按照文档发起一个http请求,就能拿到我们想要的数据或者其他操作,其中,点击参数,我们可以查看具体的参数信息
点击响应示例,即可查看接口的返回字段
二、接口认证
很多人对sonarqube的操作比较迷惑,按说我们只需要拿着token就能直接调用sonarqube的接口,但是调用接口后返回的确是401,这里我们需要按照官方文档进行处理,对账号和密码进行base64加密后,放到head的Authorization字段
DatatypeConverter.printBase64Binary(("admin:123456").getBytes(StandardCharsets.UTF_8))
headers.put("Authorization", "Basic " + sonarConfig.getSonarToken());
否则会报401的错误 。
其次我们在调用过程中需要注意的是如果sonarqube是https请求,我们需要考虑ssl认证,除非对安全非常严格的情况下,我们需要引入证书,否则,我们直接跳过即可。
private static SSLContext createSSLContext() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
return SSLContexts.custom().loadTrustMaterial(null, (x509Certificates, s) -> true).build();
}
httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setSSLSocketFactory(new SSLConnectionSocketFactory(createSSLContext())).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build();
上述代码中,使用的httpClient,这里设置跳过认证
三、代码示例
为了更加方便使用者,这边编写了一个代码示例,封装httpClient
代码结构如上图所示,我们将加密后的账号密码串放入配置文件,这里每次接口读取的时候获取配置文件中的认证信息,发送起http请求即可获取想要的结果
这里有个小技巧,接口返回的数据是一个json字符串,我们对数据操作不太方便,如果我们使用idea,可以使用这样的一个插件,将json字符串转化为java bean对象
文章来源:https://www.toymoban.com/news/detail-566227.html
这边编写了一个使用示例,代码仓在这里文章来源地址https://www.toymoban.com/news/detail-566227.html
到了这里,关于SonarQube Api调用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!