GitHub API使用--获取GitHub topic

这篇具有很好参考价值的文章主要介绍了GitHub API使用--获取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"中生成令牌。
GitHub API使用--获取GitHub topic,sping boot,Java网络爬虫,项目开发技术,github,API,spring boot,java

简单使用

使用 curl 发送请求:

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

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

GitHub API使用--获取GitHub topic,sping boot,Java网络爬虫,项目开发技术,github,API,spring boot,java

使用Apifox调用测试api

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

GitHub API使用--获取GitHub topic,sping boot,Java网络爬虫,项目开发技术,github,API,spring boot,java

使用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 API使用--获取GitHub topic,sping boot,Java网络爬虫,项目开发技术,github,API,spring boot,java

获取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的进阶使用。文章来源地址https://www.toymoban.com/news/detail-804943.html

到了这里,关于GitHub API使用--获取GitHub topic的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sping boot 整合mail读取OutLook 微软邮箱

    日常开发过程中,我们经常需要使用到邮件解析任务,本文主要针对masl方式读取OutLook 微软邮箱附件 提示:以下是本篇文章正文内容,下面案例可供参考 代码如下(示例):

    2024年02月03日
    浏览(44)
  • Java中使用Spring Boot创建RESTful API

    在当今的Web开发中,构建RESTful API已经成为一个常见的任务。Spring Boot框架提供了一种简单、快速和高效的方式来创建和部署这样的API。本文将引导您逐步了解如何使用Spring Boot来构建和开发RESTful API。 首先,我们需要设置开发环境。确保您的系统上已经安装了以下软件: Ja

    2024年02月10日
    浏览(59)
  • WebSocket+Redis实现消息推送机制以及离线消息推送(vue+sping boot)

    vue端涉及业务就不贴了 WebSocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在

    2024年02月09日
    浏览(51)
  • 获取 github 仓库最新版本号和版本号列表的 API

    github 仓库,获取指定项目的最新版本号和所有版本号列表的两个API如下: 获取最新发布的一个的版本信息 以 fatedier/frp 项目为例,对应的 API 地址为 https://api.github.com/repos/fatedier/frp/releases/latest 所有版本信息 以 fatedier/frp 项目为例,对应的 API 地址为 https://api.github.com/repos/f

    2024年02月13日
    浏览(62)
  • GitHub Copilot实战 Leetcode和Alpha Vantage API获取股票数据

    GitHub Copilot 可以提升编码速度25%。 需要在 visual studio code 添加插件 GitHub Copilot https://www.alphavantage.co/documentation/ 注册 api key https://www.alphavantage.co/support/#api-key https://www.youtube.com/watch?v=tG8PPne7ef0ab_channel=pixegami

    2024年02月12日
    浏览(38)
  • 一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器

    作者:京东物流 覃玉杰 Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、异常处理、异常错误码等功能。 使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。 强烈推荐你花3分钟学会它!

    2024年02月03日
    浏览(55)
  • Java操作k8s api示例:使用kubeconfig文件认证;获取所有pod;获取pod内应用容器的启动日志

    公司准备将应用容器化部署,先使用了华为云的 Kubernetes 服务,后面又使用阿里云的 Kubernetes 服务。并短期一个月内无法判断走哪个云商。而作为一个在公司内部用于应用发布,部署的应用。在对接完华为云的 Kubernetes 服务 Api 后。再对接阿里云发现阿里云并没用像华为云一

    2023年04月09日
    浏览(58)
  • java Sping aop 以及Spring aop 的应用事务管理

    线程死锁概念和如何避免死锁的发生: 线程的通信 wait notify() notify():---Object类 线程的状态: NEW ---start()---就绪状态---CPU时间片---运行状态 RUNNABLE]- --sleep()--- TIMED_WAITING ---wait()---- WAITING ----sysn---Blocked---- 终止状态[T] 线程池: 常见的线程池种类: 4种和原始 在软件业,AOP为Aspect Ori

    2024年02月12日
    浏览(41)
  • Kafka:Topic概念与API介绍

    事件被组织并持久地存储在 Topic 中, Topic 类似于文件系统中的文件夹,事件就是该文件夹中的文件。 Kafka 中的 Topic 始终是多生产者和多订阅者:一个 Topic 可以有零个、一个或多个生产者向其写入事件,也可以有零个、一个或多个消费者订阅这些事件。 Topic 中的事件可以根

    2024年02月05日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包