GitHub API使用--获取GitHub topic

news2025/1/23 4:07:38

目录标题

    • 技术简介
    • 申请token
    • 简单使用
    • 使用Java调用
    • 获取GitHub topic
    • 总结

技术简介

GitHub API是一个功能强大的工具,为开发者提供了访问和操作GitHub平台上资源的途径。无论是构建个人工具,集成自动化流程,还是开发应用程序,GitHub API都提供了广泛的功能。本文将介绍如何使用GitHub API,以及一些常见的用例。
GitHub API是基于RESTful风格的API,允许开发者通过HTTP请求访问GitHub上的资源。这些资源包括仓库(Repositories)、用户(Users)、问题(Issues)、分支(Branches)等。通过GitHub API,你可以实现从查看存储库信息到管理问题和合并请求等各种操作。

官方文档:

申请token

获取访问令牌:

要开始使用GitHub API,首先需要创建一个GitHub帐户,并生成一个访问令牌(Access Token)。访问令牌允许你进行身份验证并访问你有权访问的资源。在GitHub上,你可以在"Settings" -> “Developer settings” -> "Personal access tokens"中生成令牌。
在这里插入图片描述

简单使用

使用 curl 发送请求:

使用curl是最简单的方式来测试GitHub API。以下是一个获取用户信息的例子:

curl -H "Authorization: token YOUR_ACCESS_TOKEN" https://api.github.com/user

在这里插入图片描述

使用Apifox调用测试api

參考文档:https://apifox.com/apiskills/how-to-use-github-api/

在这里插入图片描述

使用Java调用

   @Test
    void test() throws IOException {
        HttpRequest request = HttpRequest.get("https://api.github.com/user")
                .header("Accept", "application/vnd.github+json")
                .header("Authorization", "Bearer <token>")
                .header("X-GitHub-Api-Version", "2022-11-28");

        HttpResponse response = request.execute();
        System.out.println(response);
    }

在这里插入图片描述

获取GitHub topic

写一个Spring Boot单元测试

@SpringBootTest
public class GitHubTest {


    @Test
    public void test() {
        try {
            //设置感兴趣的主题
            String topic = "SpringBoot";
            //定义api路径地址
            String url = "https://api.github.com/search/repositories?q=topic:" + topic;
            //创建请求对象
            // 创建HttpClient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();

            // 声明访问地址
            HttpGet httpGet = new HttpGet(url);

            // 设置请求头
            httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.101.76 Safari/537.36");
            httpGet.addHeader("Athorization", "Bearer <token>");
            httpGet.addHeader("Accept", "application/vnd.github+json");
            httpGet.addHeader("X-GitHub-Api-Version", "2022-11-28");
            // 发起请求
            CloseableHttpResponse response = httpClient.execute(httpGet);

            // 判断状态码是否是200
            if (response.getStatusLine().getStatusCode() == 200) {
                // 解析数据
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                System.out.println(content);
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}


  1. @SpringBootTest:这是一个Spring Boot测试注解,表示这是一个基于Spring Boot的测试类。
  2. @Test:这是JUnit测试框架的注解,用于标识测试方法。
  3. String topic = "SpringBoot";:定义了感兴趣的主题,这里是"SpringBoot"。
  4. String url = "https://api.github.com/search/repositories?q=topic:" + topic;:构建GitHub API的搜索URL,通过指定主题进行搜索。
  5. CloseableHttpClient httpClient = HttpClients.createDefault();:创建一个默认的CloseableHttpClient对象,用于发送HTTP请求。
  6. HttpGet httpGet = new HttpGet(url);:创建一个HTTP GET请求对象,指定GitHub API的搜索URL。
  7. 设置请求头:
    • "User-Agent":用于标识请求的用户代理,模拟浏览器访问。
    • "Authorization":使用访问令牌进行身份验证。请注意,代码中的 "Athorization" 应该是 "Authorization" 的拼写错误。
    • "Accept":指定接受的响应类型为GitHub的JSON格式。
    • "X-GitHub-Api-Version":指定GitHub API的版本。
  8. CloseableHttpResponse response = httpClient.execute(httpGet);:发起HTTP GET请求,获取响应对象。
  9. 判断响应状态码是否为200:如果响应状态码为200,将响应实体解析为字符串,并打印输出。

返回数据实示例:

{
  "total_count": 11872,
  "incomplete_results": false,
  "items": [
    {
      "id": 127988011,
      "node_id": "MDEwOlJlcG9zaXRvcnkxMjc5ODgwMTE=",
      "name": "mall",
      "full_name": "macrozheng/mall",
      "private": false,
      "owner": {
        "login": "macrozheng",
        "id": 15903809,
        "node_id": "MDQ6VXNlcjE1OTAzODA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/15903809?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/macrozheng",
        "html_url": "https://github.com/macrozheng",
        "followers_url": "https://api.github.com/users/macrozheng/followers",
        "following_url": "https://api.github.com/users/macrozheng/following{/other_user}",
        "gists_url": "https://api.github.com/users/macrozheng/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/macrozheng/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/macrozheng/subscriptions",
        "organizations_url": "https://api.github.com/users/macrozheng/orgs",
        "repos_url": "https://api.github.com/users/macrozheng/repos",
        "events_url": "https://api.github.com/users/macrozheng/events{/privacy}",
        "received_events_url": "https://api.github.com/users/macrozheng/received_events",
        "type": "User",
        "site_admin": false
      },
      "html_url": "https://github.com/macrozheng/mall",
      "description": "mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。",
      "fork": false,
      "url": "https://api.github.com/repos/macrozheng/mall",
      "forks_url": "https://api.github.com/repos/macrozheng/mall/forks",
      "keys_url": "https://api.github.com/repos/macrozheng/mall/keys{/key_id}",
      "collaborators_url": "https://api.github.com/repos/macrozheng/mall/collaborators{/collaborator}",
      "teams_url": "https://api.github.com/repos/macrozheng/mall/teams",
      "hooks_url": "https://api.github.com/repos/macrozheng/mall/hooks",
      "issue_events_url": "https://api.github.com/repos/macrozheng/mall/issues/events{/number}",
      "events_url": "https://api.github.com/repos/macrozheng/mall/events",
      "assignees_url": "https://api.github.com/repos/macrozheng/mall/assignees{/user}",
      "branches_url": "https://api.github.com/repos/macrozheng/mall/branches{/branch}",
      "tags_url": "https://api.github.com/repos/macrozheng/mall/tags",
      "blobs_url": "https://api.github.com/repos/macrozheng/mall/git/blobs{/sha}",
      "git_tags_url": "https://api.github.com/repos/macrozheng/mall/git/tags{/sha}",
      "git_refs_url": "https://api.github.com/repos/macrozheng/mall/git/refs{/sha}",
      "trees_url": "https://api.github.com/repos/macrozheng/mall/git/trees{/sha}",
      "statuses_url": "https://api.github.com/repos/macrozheng/mall/statuses/{sha}",
      "languages_url": "https://api.github.com/repos/macrozheng/mall/languages",
      "stargazers_url": "https://api.github.com/repos/macrozheng/mall/stargazers",
      "contributors_url": "https://api.github.com/repos/macrozheng/mall/contributors",
      "subscribers_url": "https://api.github.com/repos/macrozheng/mall/subscribers",
      "subscription_url": "https://api.github.com/repos/macrozheng/mall/subscription",
      "commits_url": "https://api.github.com/repos/macrozheng/mall/commits{/sha}",
      "git_commits_url": "https://api.github.com/repos/macrozheng/mall/git/commits{/sha}",
      "comments_url": "https://api.github.com/repos/macrozheng/mall/comments{/number}",
      "issue_comment_url": "https://api.github.com/repos/macrozheng/mall/issues/comments{/number}",
      "contents_url": "https://api.github.com/repos/macrozheng/mall/contents/{+path}",
      "compare_url": "https://api.github.com/repos/macrozheng/mall/compare/{base}...{head}",
      "merges_url": "https://api.github.com/repos/macrozheng/mall/merges",
      "archive_url": "https://api.github.com/repos/macrozheng/mall/{archive_format}{/ref}",
      "downloads_url": "https://api.github.com/repos/macrozheng/mall/downloads",
      "issues_url": "https://api.github.com/repos/macrozheng/mall/issues{/number}",
      "pulls_url": "https://api.github.com/repos/macrozheng/mall/pulls{/number}",
      "milestones_url": "https://api.github.com/repos/macrozheng/mall/milestones{/number}",
      "notifications_url": "https://api.github.com/repos/macrozheng/mall/notifications{?since,all,participating}",
      "labels_url": "https://api.github.com/repos/macrozheng/mall/labels{/name}",
      "releases_url": "https://api.github.com/repos/macrozheng/mall/releases{/id}",
      "deployments_url": "https://api.github.com/repos/macrozheng/mall/deployments",
      "created_at": "2018-04-04T01:11:44Z",
      "updated_at": "2024-01-14T11:37:16Z",
      "pushed_at": "2024-01-11T06:54:53Z",
      "git_url": "git://github.com/macrozheng/mall.git",
      "ssh_url": "git@github.com:macrozheng/mall.git",
      "clone_url": "https://github.com/macrozheng/mall.git",
      "svn_url": "https://github.com/macrozheng/mall",
      "homepage": "https://www.macrozheng.com/admin/",
      "size": 58454,
      "stargazers_count": 73150,
      "watchers_count": 73150,
      "language": "Java",
      "has_issues": true,
      "has_projects": true,
      "has_downloads": true,
      "has_wiki": true,
      "has_pages": false,
      "has_discussions": false,
      "forks_count": 28051,
      "mirror_url": null,
      "archived": false,
      "disabled": false,
      "open_issues_count": 36,
      "license": {
        "key": "apache-2.0",
        "name": "Apache License 2.0",
        "spdx_id": "Apache-2.0",
        "url": "https://api.github.com/licenses/apache-2.0",
        "node_id": "MDc6TGljZW5zZTI="
      },
      "allow_forking": true,
      "is_template": false,
      "web_commit_signoff_required": false,
      "topics": [
        "docker",
        "elasticsearch",
        "elk",
        "java",
        "mongodb",
        "mybatis",
        "mysql",
        "rabbitmq",
        "redis",
        "spring",
        "spring-boot",
        "spring-cloud",
        "spring-security",
        "springboot",
        "springcloud",
        "swagger-ui"
      ],
      "visibility": "public",
      "forks": 28051,
      "open_issues": 36,
      "watchers": 73150,
      "default_branch": "master",
      "score": 1.0
    },

总结

GitHub API提供了丰富的功能,允许开发者构建强大的工具和应用程序。通过了解如何获取访问令牌,发送请求,以及一些常见用例,你可以更好地利用GitHub API来支持你的项目和工作流程。希望本文能够帮助你更好地理解和使用GitHub API。在下一篇文章中,我会以如何在GitHub上进行代码搜索(查重)来介绍GitHub API的进阶使用。

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

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

相关文章

启英泰伦推出「离线自然说」,离线语音交互随意说,不需记忆词条

离线语音识别是指不需要依赖网络&#xff0c;在本地设备实现语音识别的过程&#xff0c;通常以端侧AI语音芯片作为载体来进行数据的采集、计算和决策。但是语音芯片的存储空间有限&#xff0c;通过传统的语音算法技术&#xff0c;最多也只能存储数百条词条&#xff0c;导致用户…

MySQL:ERROR 1067 - Invalid default value for ‘end_time‘【解决办法】

问题描述&#xff08;mysql版本&#xff1a;5.7.36&#xff09;&#xff1a; 今天在使用Navicat可视化工具运行sql文件&#xff0c;发生如下错误&#xff1a; 在图中&#xff0c;sql是没有错误的&#xff0c;但是运行报错Invalid default value for end_time。 解决办法&#…

ACM论文LaTeX模板解析(一)| 模板下载与安装

本文收录于专栏&#xff1a;ACM 论文 LaTeX模板解析&#xff0c;本专栏将会围绕ACM 论文 LaTeX模板解析持续更新。欢迎点赞收藏关注&#xff01; 文章目录 1. 引言2. 下载方式 1. 引言 计算机械协会&#xff08;ACM&#xff0c;Association for Computing Machinery&#xff0…

Linux环境基础开发工具的使用(上)

文章目录 Linux 软件包管理器 yum什么是软件包关于rzsz查看软件包安装软件卸载软件 Linux编辑器 - vimvim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行模式各命令汇总 配置vim Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程…

[NAND Flash 6.2] NAND 初始化常用命令:复位 (Reset) 和 Read ID 和 Read UID 操作和代码实现

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 把下文中的字母和数字用`包起来, 中文不变。 全文 4400 字,主要内容 复位的目的和作用? NAND Reset 种类:FFh, FCh, FAh, FDh 区别 Reset 操作步骤 和…

叉车车载终端定制_基于MT6762安卓核心板的车载终端设备方案

叉车车载终端是一款专为叉车车载场景设计的4英寸Android车载平板电脑。它采用了高能低耗的8核ARM架构处理器和交互开放的Android 12操作系统&#xff0c;算力表现强大。此外&#xff0c;该产品还具备丰富的Wi-Fi-5、4G LTE和蓝牙等通讯功能&#xff0c;可选配外部车载蘑菇天线&…

Python实现分位数回归模型(quantreg算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 分位数回归是简单的回归&#xff0c;就像普通的最小二乘法一样&#xff0c;但不是最小化平方误差的总和…

vue3移动端适配

将vue3项目中的 px 单位&#xff0c;自动转换为rem 单位 可以看到这里会根据页面缩小放大变化 需要安装两个插件&#xff0c;看步骤 amfe-flexible --- 默认指向2.2.1版本 npm i -S amfe-flexiblepostcss-pxtorem --- 默认指向6.0.0版本 --save-dev 参数会把依赖包的版本信…

【RabbitMQ】2 RabbitMQ介绍与架构

目录 简介架构Connection 和Channel关系工作流程生产者发送消息的流程消费者接收消息的过程 RabbitMQ数据存储存储机制 安装和配置RabbitMQRabbitMQ常用操作命令 简介 RabbitMQ&#xff0c;俗称“兔子MQ”&#xff08;可见其轻巧&#xff0c;敏捷&#xff09;&#xff0c;是目…

【msvcr120.dll】修复电脑出现msvcr120.dll找不到的详细方法

“msvcr120.dll丢失”。那么&#xff0c;msvcr120.dll丢失是什么意思呢&#xff1f;msvcr120.dll丢失的原因是什么&#xff1f;msvcr120.dll的作用又是什么呢&#xff1f;当msvcr120.dll丢失时&#xff0c;会对计算机产生什么影响&#xff1f;本文将详细介绍这些问题&#xff0…

鸿蒙Harmony是如何影响Android工程师的呢?

其实鸿蒙在2019就已经出来了&#xff0c;那时候还是套壳Android的。从2023年9月的发布会上&#xff0c;华为宣布鸿蒙原生应用全面启动、HarmonyOS NEXT亮相以后&#xff0c;围绕着纯血鸿蒙展开的鸿蒙应用生态发展迅猛&#xff0c;目前已经有包括社交、金融、影音、游戏、资讯、…

现代雷达车载应用——第3章 MIMO雷达技术 3.3节 汽车MIMO雷达测角

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 3.3 汽车MIMO雷达测角 在发射天线和接收天线分别为Mt和Mr的汽车MIMO雷达中&#xff0c;可以合成一个由Mt*Mr个阵元组成的虚拟ULA&#xff0c;单元间…

解决报错:AttributeError: module ‘torch‘ has no attribute ‘_six‘

报错代码&#xff1a; if torch._six.PY3:import importlibimport importlib.utilimport sys这里的意思是判断你的python版本是否是python3&#xff0c;如果是PY37&#xff0c;就是判断你的python版本是不是python3.7&#xff0c;源码&#xff1a; PY37 sys.version_info[0]…

NumPy:从初识到实战,探索Python科学计算的无限可能

NumPy 在浩瀚的Python编程世界中&#xff0c;有一个强大的库如星辰般璀璨&#xff0c;它是数据科学家、机器学习工程师乃至量化金融分析师手中的利器——NumPy&#xff0c;它以其高效的数据处理能力和便捷的矩阵运算机制&#xff0c;在科研与工程领域中占据着举足轻重的地位。…

寄快递有没有什么省钱的小妙招? 怎样寄快递才能省钱呢?

快递物流行业的快速崛起刺激了人们的消费欲望&#xff0c;其中典型的是每每到重大节日尤其是双十一或者双十二&#xff0c;消费市场异常火爆&#xff0c;这也使得快递行业加班加点的干也不追不上人们下单的速度。如今&#xff0c;互联网时代崛起&#xff0c;网购成为了大家最寻…

码农的周末日常---一月的第二周

上周总结 开发任务按规划完成 参加新版本的需求分析会议&#xff0c;基本了解新功能的实现 开始阅读一本新书《Head first Java》 2024/01/13 天气晴 温度适宜 蓝蓝的天&#xff0c;暖暖的阳光&#xff0c;不晒鞋可惜了&#xff0c;赶紧掏出我那正宗莆田和anta晒…

高级分布式系统-第12讲 分布式控制经典理论

控制器基础 分布式控制系统的设计&#xff0c;是指在给定系统性能指标的条件下&#xff0c;设计出控制器的控制规律和相应的数字控制算法。 PID控制器 根据偏差的比例&#xff08;Proportional&#xff09;、积分&#xff08;Integral&#xff09;、微分&#xff08;Derivati…

MATLAB R2023a安装教程

鼠标右击软件压缩包&#xff0c;选择“解压到MATLAB.R2023a”。 打开解压后的文件夹&#xff0c;鼠标右击“R2023a_Windows_iso”选择“装载”。 鼠标右击“setup.exe”选择“以管理员身份运行”。 点击“高级选项”选择“我有文件安装密钥”。 点击“是”&#xff0c;然后点击…

steam搬砖项目赚钱吗?低门槛副业月入5k真的假的?

steam搬砖项目一开始默默无闻&#xff0c;现在越来越受欢迎&#xff0c;因为大家都看到了该项目的长期稳定性。 steam搬砖项目主要是搬csgo游戏装备和道具&#xff0c;从steam购买&#xff0c;在网易Buff上出售&#xff0c;赚取差价。只需少量投资&#xff0c;即可获得长期稳定…

【线性表的基本操作实现及其应用 】

线性表的基本操作实现及其应用 1.实验目的 ⑴ 熟练掌握线性表的基本操作在两种存储结构上的实现&#xff0c;其中以熟悉各种链表的操作为重点。 ⑵ 巩固高级语言程序设计方法与技术&#xff0c;会用线性链表解决简单的实际问题。 2.实验原理与要求 ⑴ 按照数据结构实验任务书&…