GitHub API使用--获取GitHub topic

目录标题

    • 技术简介
    • 申请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调用

   @Testvoid 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 {@Testpublic 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);// 判断状态码是否是200if (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.mzph.cn/news/630358.shtml

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

相关文章

【Git】任何位置查看git日志

需求 现需要查看指定项目中的某个文件的 Git 日志。如有 项目代码 jflowable &#xff0c;需要查看其下文件 D:\z_workspace\jflowable\src\main\java\com\xzbd\jflowable\controller\TestController.java 的日志。 分析 一般的思路是&#xff0c;进入 jflowable 项目&#…

ES 之索引和文档

本文主要介绍ES中的数据组成结构单元。 一、文档(Document) 1、概念 ES的数据存储单元是面向文档的&#xff0c;文档是所有数据存储&#xff0c;搜索的最小单元。 你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。 文档存入ES是序列…

BRC20通证的诞生与未来展望!如何导入bitget教程

BRC-20通证是什么&#xff1f; 嘿&#xff01;你知道BRC-20通证吗&#xff1f;这可是比特币区块链上的超级明星&#xff01;它们不依赖智能合约&#xff0c;而是把JSON代码刻在聪上&#xff0c;聪可是比特币的最小单位哦&#xff01;就像在比特币的乐高积木上盖房子&#xff0…

dubbo入门案例!!!

入门案例之前我们先介绍一下&#xff1a;zookeeper。 Zookeeper是Apacahe Hadoop的子项目&#xff0c;可以为分布式应用程序协调服务&#xff0c;适合作为Dubbo服务的注册中心&#xff0c;负责服务地址的注册与查找&#xff0c;相当于目录服务&#xff0c;服务提供者和消费者只…

自动驾驶轨迹规划之碰撞检测(一)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.碰撞检测的意义 2.安全走廊 3 计算几何 4 AABB与OBB 1.碰撞检测的意义 对于自动驾驶汽车或机器人的路径规划&#xff0c;碰撞检测是其…

Python 数据类型转换:数据世界的形态转换术

在 Python 中&#xff0c;数据类型转换是一项关键的技能。数据类型的转换使得我们能够在不同类型的数据之间进行转换和操作&#xff0c;提升了我们对数据的处理能力。本文将深入探讨 Python 中的数据类型转换&#xff0c;包括常见的数据类型、转换方法和使用技巧。 常见的数据类…

M1 MacOS下安卓虚拟化的最佳方案

categories: [VM] tags: MacOS VM 写在前面 一直想在桌面环境虚拟化安卓app, 但是看网上的推荐一直感觉不合胃口, 不是要花钱就是有广告, 想着找找开源的实现, 后来发现还是 Google 自家的产品用着舒服. 安装与配置 brew install android-studio然后随便开一个项目, 选默认…

通过Shell脚本登录MySQL,并执行MySQL命令

以下是一个通过Shell脚本登录MySQL 8并执行MySQL命令的示例&#xff1a; #!/bin/bash# MySQL服务器地址&#xff08;如果在同一台机器上&#xff0c;可以是localhost或127.0.0.1&#xff09; MYSQL_HOST"localhost"# MySQL服务器端口&#xff08;默认为3306&#xf…

阿赵UE学习笔记——10、Blender材质和绘制网格体

阿赵UE学习笔记目录   大家好&#xff0c;我是阿赵。   之前介绍了虚幻引擎的材质和材质实例。这次来介绍一个比较有趣的内置的Blender材质。   在用Unity的时候&#xff0c;我做过一个多通道混合地表贴图的效果&#xff0c;而要做过一个刷顶点颜色混合地表和水面的效果。…

C#封装服务

C#封装服务 新建服务项目&#xff1b;重构 OnStart 和 OnStop using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using S…

【Gradle】Maven-Publishing

使用Java开发完成一个模块或者一个基础框架需要提供给团队项目使用&#xff0c;这个时候有两种方式可提供&#xff0c;一是提供源码&#xff0c;二是提供编译构建好的jar包供使用&#xff0c;这个时候需要讲构建好的包发布到公司的私服&#xff08;公司maven仓库&#xff09;&a…

HCIP BGP(一)

任务&#xff1a; 1.R1上有两个环回&#xff0c;分别为192.168.1.0/24&192.168.2.0/24&#xff0c;只允许学到汇总&1.0 2.R7上有两个环回172.16.1.0/24&172.16.2.0/24&#xff0c;要求全部宣告&#xff0c;但是只有2.0可以通过 3.全网可达 拓扑图如下&#xff…

C语言经典算法之顺序查找算法

目录 前言 A.建议 B.简介 一 代码实现 二 算法时空复杂度 A.时间复杂度&#xff1a; B.空间复杂度&#xff1a; 三 优点和缺点 A.优点&#xff1a; B.缺点&#xff1a; 四 现实中的应用 前言 A.建议 1.学习算法最重要的是理解算法的每一步&#xff0c;而不是记住算…

常见的反爬虫风控 | 验证码风控

一.前言 在当今信息技术迅速发展的背景下&#xff0c;网站和在线服务面临着日益增长的自动化访问威胁&#xff0c;这些大多来自于各类爬虫程序。这种大量的自动化访问不仅对网站的正常运行构成压力&#xff0c;还可能导致敏感数据的泄露&#xff0c;甚至被用于不正当竞争和恶意…

多表关联查询

基本信息&#xff1a; 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下&#…

C++大学教程(第九版)5.15修改GradeBook

目录 题目 代码 运行命令&#xff08;在控制台输入&#xff09; 运行截图 题目 &#xff08;修改GradeBook&#xff09;修改图5.9~图5.11所示的 GradeBook 程序&#xff0c;使它计算一组成绩的平均成绩。 成绩A为4分&#xff0c;成绩B为3分&#xff0c;依次类推。 A:4 B:3…

transbigdata 笔记: 轨迹密集化/稀疏化 轨迹平滑

1 密集化 transbigdata.traj_densify(data, col[Vehicleid, Time, Lng, Lat], timegap15) 轨迹致密化&#xff0c;保证至多每隔timegap秒都有一个轨迹点 这边插补使用的是pandas的interpolate&#xff0c;method设置的是index 1.1 举例 transbigdata 笔记&#xff1a; 官方…

《数据结构、算法与应用C++语言描述》-红黑树的C++实现-百万级数据量测试通过

红黑树 完整可编译运行代码见仓库&#xff1a;GitHub - Jasmine-up/Data-Structures-Algorithms-and-Applications/_35Red black tree。 如有问题请在评论区指出。另外&#xff0c;Github仓库会根据我的学习情况持续更新&#xff0c;欢迎大家点star&#xff0c;谢谢。 基本概…

指纹浏览器为什么要搭配代理IP?如何选择?

跨境电商无论是店群模式还是社媒矩阵运营&#xff0c;都必须涉及管理多个社媒/电商帐户的动作&#xff0c;但这很容易引发网站怀疑并最终被批量封号。使用指纹浏览器浏览器的主要目的是通过创建新的浏览器指纹来隐藏用户的真实浏览器指纹。 但浏览器指纹并不是网站关注的唯一…

ELK之Filebeat安装配置及日志抓取

一、Filebeat是什么 轻量型日志采集器 无论您是从安全设备、云、容器、主机还是 OT 进行数据收集,Filebeat 都将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。 Filebeat 随附可观测性和安全数据源模块,这些模块简化了常见格式的日志的收集、解…