SonarQube Api调用指南

news2025/1/13 17:44:11

好几年前写过一篇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对象
在这里插入图片描述

在这里插入图片描述
这边编写了一个使用示例,代码仓在这里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

递归递推练习题答案

1.用递归的方法123…N的值(in:5,out:15) def dg(n):if n1:return 1else:return dg(n-1)n nint(input()) print(dg(n))2.输出斐波那契数列的第N项,0,1,1,2,3,5,8&#xf…

GIT:git 教程

1. 版本控制 版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看和备份。 它的作用如下: 实现跨区域多人协同开发。追踪和记载一个或者多个文件的历史记录。组织和保护你的源代码和文档。统计工作量。并行开…

Java EE企业级应用开发(SSM)第9章

第9章MyBatis入门 一.预习笔记 1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0:导…

RFID安全的三次认证

一.RFID介绍 RFID是Radio Frequency Identification的缩写,即射频识别。它是一种通过用电磁场收集数据并从远距离自动识别物体的技术。它使用无线电波来将信息从一个电子标签传输到读卡器中,而不需要直接接触。这些标签可以嵌入到物品中或附加到物品表面…

用Python给模板邮件加彩蛋

需求是这样来的,笔者写了很多的邮件通知模板,里面的内容都是千篇一律的,比如说,***你好,请查收附件什么什么报告,然后在署名,结束。这样的模板邮件会一直发下去,用户看久了会很单调。…

基于C#制作的锁屏小工具,点击图片内容解锁

自己制作的一个无厘头电脑锁屏工具被同事发现了,纷纷要求给他们量身定制安排一套 一、开发步骤1.1 创建项目1.2 窗体设置1.3 键盘钩子事件1.4 解锁按钮设置 一、开发步骤 1.1 创建项目 打开Visual Studio,右侧选择创建新项目。 搜索框输入winform&#…

makefile 结构规则,依赖,伪目标

文章目录 前言一、Makefile 规则格式二、依赖示例:依赖的规则 三、伪目标1. makefile 中的伪目标:2. 伪目标的语法3. 伪目标的规则调用4. 绕开 .PHONY关键字定义伪目标 四、小技巧:1. 命令无回显。2. 可执行文件 和 all 同时作为 makefie 中的…

MOS管常见的故障分析

MOS在控制器电路中的工作状态:开通过程(由截止到导通的过渡过程)、导通状态、关断过程(由导通到截止的过渡过程)、截止状态。MOS主要损耗也对应这几个状态,开关损耗(开通过程和关断过程&#xf…

学java注解,看这一篇文章就够了

一、注解的概念 Annotation(注解)是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰包、类、接口、字段、方法参数、局部变量等。 常见…

Powered by 平行云 | 我们与大有艺术一起,在玩儿一种很新的戏剧

可以用VR看的,才是真元宇宙! 平行云赋能大有艺术,开启孟京辉导演的元宇宙「沉浸式」戏剧《浮士德》。"全球第一场可以用VR看的元宇宙戏剧"是什么的体验? 让我们一起一探究竟! 你慢慢地走进了一片无边无际的…

巧用千寻位置GNSS软件| 铁路放样必备技巧

铁路放样是在铁路测量施工前的一项重要工作,千寻位置GNSS软件可轻松实现铁路放样,本期就和大家分享具体操作步骤。 点击【测量】->【铁路放样】,在线路库中选择一条线路点击【确定】直接进入线路中 心线放样,如图 5.16-1所示。…

实现方法、构造器位置的自动装配

1.Autowired注解概述 Autowired注解的源码 package org.springframework.beans.factory.annotation;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPoli…

Uint8Array文件下载

vue项目,自己调用了阿里云OSS的SDK,进行文件的上传以及下载,有个功能是列表中的附件需要支持点击下载,这里就用到阿里云oss的文件下载,使用了Nodejs的SDK const OSS require(ali-oss); const client new OSS({...op…

nodejs+vue网上学生社团管理系统

并运用Photoshop CS6技术美化网页,辅之以CSS技术。系统是基于面向对象编程的web应用程序。本系统主要实现的功能有系统用户管理、社团信息管理、社团类别管理、社团活动管理、社团论坛管理、系统管理、个人资料管理、学生入团管理、社团公告管理、社团活动管理、社团…

Ubuntu22.04安装opencv依赖包libjasper-dev出现unable to locate libjasper-dev的终极解决办法

执行 sudo apt install libjasper-dev 提示 执行 sudo apt install libjasper1 libjasper-dev 仍然提示 更换软件源: sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt-get update提示 该仓库没有数…

tiechui_lesson05_内核小文件拷贝

主要学习在内核中的文件操作,包括文件的打开,创建,读取,写入,查询文件属性等。 涉及的API和宏函数 ZwOpenFileZwCreateFileZwQueryInformationFileZwReadFileZwWriteFileZwCloseInitializeObjectAttributes 1.文件的…

学习日记,java学习

题目 生病了,可能是羊了,喉咙好干,好难受 每日一题 1010. 总持续时间可被 60 整除的歌曲 难度中等268收藏分享切换为英文接收动态反馈 在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。 返回其总持续时间(以秒为单位)可被 60 整除的…

vue+elementui在线教学互动学习考试系统nodejs师生互动交流网站kpm58

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 前端vueelementui, (1) vue引入elementui 1.使用npm安装element-ui npm i element-ui -S 2.在main.js中导入使用vue import element-u…

Android WorldWind的使用与加载数方瓦片

明确下定义,数方瓦片也叫五层十五级瓦片。现记录下如何在World Wind Android中加载数方瓦片的方法。 原理 加载数方瓦片最核心的方法是WorldWindAndroid加载图片的方法,更加详细的使用说明请访问worldwind官网。核心代码如下: Sector sect…

Daimayuan Online Judge #613. 好序列(思维题 暴力/启发式分裂)

题目 思路来源 知乎严格鸽 (暴力/启发式分裂)代码源每日一题 Div1 好序列 - 知乎 题解 启发式分裂,可以认为是启发式合并的逆过程 比较直白的想法是找到第一个只出现一次的数的位置x,然后分治[1,x-1]和[x1,n] 但是这样最坏复杂度是O(n^2)的&#xf…