Doxygen源码分析: 子目录简要介绍

news2024/11/17 2:36:17

2023-05-18 23:56:46
ChrisZZ imzhuo@foxmailcom
Hompage https://github.com/zchrissirhcz

在这里插入图片描述

文章目录

    • 1. doxygen 版本
    • 2. doxygen 目录结构
      • `.git` 目录
      • `.github` 目录
        • `workflows/build_cmake.yml`
        • `workflows/coverity.yml`
        • `workflows/docer_publish.yml`
      • addon 目录
        • doxmlparser 目录
        • doxyapp 目录
        • doxyparse 目录
        • doxypysql 目录
        • doxysearch 目录
        • doxywizard 目录
      • cmake 目录
      • deps 目录
        • filesystem 目录
        • jquery 目录
        • liblodepng 目录
        • libmd5 目录
        • libmscgen 目录
        • spdlog 目录
        • svg 目录
        • TinyDeflate 目录
      • doc 目录
      • doc_internal 目录
      • examples 目录
      • libversion 目录
      • libxml 目录
      • src 目录
      • templates 目录
        • general 目录
        • html 目录
        • icon 目录
        • latex 目录
        • xml 目录
      • testing 目录
      • vhdlparser 目录
      • winbuild 目录

1. doxygen 版本

zz@Legion-R7000P% git log             
commit acb04c2a27e29b82e697d20ac0561034f0a16e20 (HEAD -> master, origin/master, origin/HEAD)
Author: Dimitri van Heesch <doxygen@gmail.com>
Date:   Sun May 14 12:12:28 2023 +0200

    Rename GENERATE_SITEMAP to SITEMAP_URL

2. doxygen 目录结构

列出第一层目录

$ find . -maxdepth 1 -type d | sort -V
.
./.git
./.github
./addon
./cmake
./deps
./doc
./doc_internal
./examples
./libversion
./libxml
./src
./templates
./testing
./vhdlparser
./winbuild

$ find . -maxdepth 1 -type d | sort -V | wc -l
16

.git 目录

存储了 doxygen 历史提交记录。虽然是从 2013 年从 svn 切换到 git 的, 但是 git 可以导入 svn 提交记录, 而 doxygen 最早提交记录在 1999 年:

* 38d26d907e 2000-01-13 | add TopLevelAdmin=yes to keep all checkouts `rooted' [Dimitri van Heesch]        
* 3a0442f6ec 1999-12-15 | add doxygen alias [Dimitri van Heesch]
* df5aeefd51 1999-12-15 | mods for doxygen-0.49-991205 [Dimitri van Heesch]
* dc2968f7b4 1999-12-15 | mods for doxygen-0.49-991117 [Dimitri van Heesch]
* 916d6d5c6f 1999-12-15 | mods for doxygen-0.49-991106 [Dimitri van Heesch]
* a54eecdf4b 1999-12-15 | mods for doxygen-0.49-991003 [Dimitri van Heesch]
* 1d4e23de96 1999-12-15 | mods for doxygen-0.49-990901 [Dimitri van Heesch]
* ee8333a5d2 1999-12-15 | mods for doxygen-0.49-990829 [Dimitri van Heesch]
* 6aa7383e23 1999-12-15 | mods for doxygen-0.49-990728 [Dimitri van Heesch]
* e04496cb64 1999-12-15 | mods for doxygen-0.49-990522 [Dimitri van Heesch]
* 322885a870 1999-12-15 | initial version [Dimitri van Heesch]
* 361bf7915b 1999-12-15 | add gif handling [Dimitri van Heesch]
* 388dcb2a15 1999-12-13 | initial checkin [Dimitri van Heesch]
* b40b59f734 1999-12-13 | initial checkin [Dimitri van Heesch]
* a6238a4898 1999-12-13 | New repository initialized by cvs2svn. [Dimitri van Heesch]

.github 目录

用于 github action 方式的 CI/CD 脚本。

workflows/build_cmake.yml

基于 cmake 方式构建。支持的操作系统、编译器、构建类型(debug还是release)比较全面:

{ubuntu, macOS, windows} x {gcc, clang} x {Debug, Release}

workflows/coverity.yml

执行编译, 然后生成测试覆盖率报告。

workflows/docer_publish.yml

发布 docker 包。

addon 目录

插件目录, 包括了6个插件, 每个插件对应一个子目录

  • doxmlparser
  • doxyapp
  • doxyparse
  • doxypysql
  • doxysearch
  • doxywizard

doxmlparser 目录

是一个python包,可以更容易地解析doxygen生成的XML输出。
API是使用Dave Kuhlman的generateDS从index.xsd和compound.xsd XML模式文件生成的https://www.davekuhlman.org/generateDS.html。
请参阅examples目录,了解如何使用python模块

doxyapp 目录

是一个例子程序, 展示了如何把 doxygen 作为“源解析引擎”嵌入到应用程序中, 展示了如何在不生成 xml、html等输出的情况下运行 doxygen, 以及如何用使用从源代码中找到的符号信息。

这种方式 license 不友好, 要求获得 GPL 许可。

doxyparse 目录

这个目录包含一个基于 doxyapp 代码的 “源代码引擎”。 Doxyparse 修改 Doxygen 的默认输出, 并以 YAML 格式存储代码元素之间的依赖关系, 而不是生成用于人类阅读的格式。 换言之 Doxyparse 生成的东西是给机器看的。

Doxyparse 被看作是一个源代码静态分析工具, 被用在了很多的软件工程研究中: 软件测量, 质量测量等。Doxyparse 最开始被 Anlizo(https://www.analizo.org) 工具使用, 它是一个“源代码分析工具”套件, 目的是实现语言独立性和可扩展性、能够提取和计算相当数量的源代码度量结果, 生成依赖图, 以及其他的软件演进过程分析。

Doxyparse 有对应的论文: https://scholar.google.com.br/scholar?q=doxyparse

Doxyparse 原本是独立项目, 现在则在 doxygen 代码仓库中存放和开发。

doxypysql 目录

是一个 python 小工具, 用于在 doxygen_sqlite3.db 数据库文件中执行查询。

doxysearch 目录

没有说明文件。C++ 代码。 看起来是是建立 doxygen 索引、 执行 doxygen 搜索的插件, 主要疑问是为什么没放在 src 目录下。

doxywizard 目录

Doxywizard是一个图形前端,用于读取/编辑/写入doxygen配置文件和启动doxygen。它需要Qt 4.3或更高版本。

嗯,这是个给小白用户使用的界面工具, 简单易用。

cmake 目录

存放 CMake 构建过程中用到的辅助脚本。内容较多, 等后续分析构建过程时再仔细阅读分析。

deps 目录

dependencies 的缩写, 意思是依赖库。 这里的依赖并不仅是 C++ 依赖, 还包括 html 相关的 js 库等, 包括这几个目录:

  • filesystem
  • jquery
  • liblodepng
  • libmd5
  • libmscgen
  • spdlog
  • svg
  • TinyDeflate

filesystem 目录

使用了 ghc::filesystem 这个 header-only 的文件系统库:

A C++17-like filesystem implementation for C++11/C++14/C++17/C++20

实际上目前 doxygen 的 CMake 中已经使用 C++17 标准进行构建了, ghc::filesystem 估计可以删了。

jquery 目录

用于生成 doxygen 的 jquery.js 文件。

是 javascript 库 jquery 本体以及相关包的最小化版本合集,用于 html 页面显示:

  • jquery 3.6.0: https://jquery.com/download/
  • jquery.ui 1.13.2: https://github.com/jquery/jquery-ui
    modules required:
    • jquery.ui.core all
    • jquery.ui.interactions resizable
    • jquery.ui.widgets mouse
  • jquery.scrollTo: 2.1.2: https://github.com/flesler/jquery.scrollTo
  • jquery.powertip: 1.3.1: https://stevenbenner.github.io/jquery-powertip/
  • jquery.touchpunch: 0.2.3: http://touchpunch.furf.com/ + fix for issue 303
  • jquery.smartmenus: 1.1.0: https://www.smartmenus.org/

由于 jquery 自身有性能问题, 本目录存放的 jquery 是魔改的: 删掉了 destroy 方法。

liblodepng 目录

是一个轻量级三方库, C语言, 作者是 Lode Vandevenne, 是一个 png 的编解码库。版本是 LodePNG 20080927, 不带 SIMD 优化。

libmd5 目录

是一个轻量级三方库, C语言, 作者是 Colin Plumb, 1993年的作品。用于 md5 加密解密。

libmscgen 目录

是第三方库 mscgen 的源码, mscgen 库官方( https://www.mcternan.me.uk/mscgen )已经没有在维护了。

Mscgen是一个小程序,它解析消息序列图描述,并生成PNG、SVG、EPS或服务器端图像映射(ismaps)作为输出。消息序列图(MSC)是表示一段时间内实体和交互的一种方式,通常与SDL结合使用。MSC在电信中很流行,用于指定协议的操作方式,尽管创建或使用MSC并不需要复杂。Mscgen旨在提供一种简单的文本语言,该语言易于创建、编辑和理解,也可以转换为常见的图像格式进行显示或打印。

该程序及其解析的语言受到Graphviz Dot的启发,它提供了一种非常好的方法来记录状态转换图、数据结构和有向图。与Graphviz不同,该程序不进行巧妙的布局操作或样条线路由,因为MSC不需要这样做,因此实现起来要简单得多。Doxygen(1.5.2版以后的版本)还允许直接嵌入MSC

mscgen 依赖于 png 编解码库, doxygen 则使用 lodepng 这个简易的 png 编解码库替代原本的厚重的 libpng。

spdlog 目录

doxygen 原本的 log 打印是自行实现的, 估计觉得维护的太麻烦了, 4个月前切换到了 spdlog 库, 这个目录存放了 spdlog 的源代码

 Dimitri van Heesch, 4个月前   (1 15th, 2023 3:26 凌晨) 

Replace custom tracing/debug prints by tracing via spdlog

Add -t <file> option to redirect tracing to a file.
If <file> is omitted, trace.txt will be used as file name.

svg 目录

用来生成 svg.min.js 文件的, 依赖了 svgdotjs(3.1.2) 和 svgpan-1.2mod.js(1.2). mod 意思是魔改的, 改的很多, 所以不要想升级 svgpan 了, 改的特别多。

TinyDeflate 目录

是一个轻量级第三方库, 只有一个文件 gunzip.hh(C++ header-only库), 作者是 Joel Yliluoma, 用于 gzip 格式的解压, 不依赖 zlib 库。

TinyDeflate 库是收到第13届 IOCCC 获胜程序(作者 Ron McFarland)的启发和影响而写成的, 然后从 tinf 库作者 Joergen Ibsen 得到了优化方面的想法。

doc 目录

doxygen 自身的文档。从目录结构可以看出来作者本身是怎样用 doxygen 的:手写配置文件 Doxyfile。
内容较多, 可以用 doxygen 生成文档再查看; 其实应该就是 doxygen 官网的内容。略。

doc_internal 目录

内部文档, 应该是面向开发者的:

  • commands_history.md: doxygen 的特殊命令(如\\#, \\date)清单, 以及是在哪个版本引入的
  • commands_internal.md: doxygen 的内部的特殊命令清单
  • doxygen.md: doxygen 开发者文档的介绍页
  • releases.md: 历史发布版本的日期记录
  • tags_history.md: doxygen 配置文件中的参数(如HTML_OUTPUT)清单, 以及是在哪个版本引入的

examples 目录

是一个例子工程, 相当于用户自己的 C/C++ 工程, 用于生成 doxygen 文档的。

libversion 目录

Doxygen 作者 Dimitri van Heesch 实现的库, 用户获取 doxygen 相关的三个版本字符串:

  • const char *getDoxygenVersion(void)
  • const char *getGitVersion(void);
  • const char *getFullVersion(void);

libxml 目录

Doxygen 作者 Dimitri van Heesch 实现的库, 是一个基于 flex 库的 XML 文件的 parser, 代码很简单只有500行。

xml.h 是 C++ 实现的.
xml.l 是一个 flex 文件, 用 flex 生成 xml.cpp。

src 目录

doxygen 代码本体。没有子目录, 只有平铺的文件; 有 flex 文件(*.l), C/C++ 文件(*.h, *.cpp, *.c), 有 python 文件(*.py). 还有一堆翻译文件(translator_xx.h). 其中中文的翻译文件2000多行, 可以截取一点看下:

class TranslatorChinese : public TranslatorAdapter_1_9_4
{
    ...
    virtual QCString latexLanguageSupportCommand()
    {
      return "\\usepackage{CJKutf8}\n";
    }
    virtual QCString trISOLang()
    {
      return "zh";
    }
    virtual QCString getLanguageString()
    {
      return "0x804 Chinese (PRC)";
    }
    virtual QCString latexFontenc()
    {
      return "";
    }
    virtual QCString latexDocumentPre()
    {
      return "\\begin{CJK}{UTF8}{gbsn}\n";
    }
    virtual QCString latexDocumentPost()
    {
      return "\\end{CJK}\n";
    }
    virtual bool needsPunctuation()
    {
      return false;
    }


    ...

    /*! used in the compound documentation before a list of related functions.
     */
    virtual QCString trRelatedFunctions()
    { return "相关函数"; }

    /*! subscript for the related functions. */
    virtual QCString trRelatedSubscript()
    { return "(请注意: 这些不是成员函数.)"; }

    /*! header that is put before the detailed description of files,
     * classes and namespaces.
     */
    virtual QCString trDetailedDescription()
    { return "详细描述"; }

    /*! header that is used when the summary tag is missing inside the details tag */
    virtual QCString trDetails()
    { return "详细信息"; }

    /*! header that is put before the list of typedefs. */
    virtual QCString trMemberTypedefDocumentation()
    { return "成员类型定义说明"; }

    /*! header that is put before the list of enumerations. */
    virtual QCString trMemberEnumerationDocumentation()
    { return "成员枚举类型说明"; }

    /*! header that is put before the list of member function. */
    virtual QCString trMemberFunctionDocumentation()
    { return "成员函数说明"; }

    /*! header that is put before the list of member attributes. */
    virtual QCString trMemberDataDocumentation()
    {
      if (Config_getBool(OPTIMIZE_OUTPUT_FOR_C))
      {
        return "结构体成员变量说明";
      }
      else
      {
        return "类成员变量说明";
      }
    }

    /*! this is the text of a link put after brief descriptions. */
    virtual QCString trMore()
    { return "更多..."; }

    /*! put in the class documentation */
    virtual QCString trListOfAllMembers()
    { return "所有成员列表"; }

    /*! used as the title of the "list of all members" page of a class */
    virtual QCString trMemberList()
    { return "成员列表"; }

    /*! this is the first part of a sentence that is followed by a class name */
    virtual QCString trThisIsTheListOfAllMembers()
    { return "成员的完整列表,这些成员属于" CN_SPC; }

    /*! this is the remainder of the sentence after the class name */
    virtual QCString trIncludingInheritedMembers()
    { return ",包括所有继承而来的类成员"; }

    /*! this is put at the author sections at the bottom of man pages.
     *  parameter s is name of the project name.
     */
    virtual QCString trGeneratedAutomatically(const QCString &s)
    { QCString result;
      result = "由" CN_SPC "Doyxgen" CN_SPC "通过分析" CN_SPC;
      if (!s.isEmpty()) result += (s+CN_SPC "的" CN_SPC);
      result+= "源代码自动生成.";
      return result;
    }

    ...
};

templates 目录

templates 意思是模板, 这个目录存放了几个子目录, 对应不同类别的模板:

  • general
  • html
  • icon
  • latex
  • xml

general 目录

通用的模板, 给出了默认的布局 xml 文件。

html 目录

猜测是 doxygen 生成的 html 格式文档的模板。文件比较多, 几十个。

icon 目录

doxygen 的图标(icon)。

latex 目录

latex 模板。文件相对来说比较少。因为 latex 最终输出是 pdf 单个文件, 不像 html 那样一箩筐。

xml 目录

存放了几个 xsd 文件。

XSD 文件是一个定义文件,它指定可以成为 XML 文档的一部分的元素和属性。这可确保正确解释数据并捕获错误,从而进行适当的 XML 验证。 XSD 文件确保输入的数据遵循文件中定义的相同结构。 XSD 文件以 XML 文件格式存储

testing 目录

放了101个子目录, 每个目录对应一份测试数据。测试数据是 xml格式的。

除了101个子目录, 每个目录都有一个配套的文件, 如 c, cpp, dox 文件。

101个子目录应该是预期输出的内容(ground truth, EXPECTED RESULT).

vhdlparser 目录

解析 vhdl 的代码实现。VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language, 是一种用于电路设计的高级语言。

winbuild 目录

存放在 Windows 系统上编译 doxygen 库时, 需要的 iconv 库。 iconv 库本体是 GNU 下开发的, 不支持 Windows。 有网友修改移植了 iconv 库, 之前有创建 Release, 后来估计删除了, 因此 doxygen 的 gitlab CI 中从 release 下载的step其实现在无效了。

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

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

相关文章

金币商城功能迭代. 使用版本号乐观锁解决数据的并发修改问题

前言. 公司的商城模块嵌在微信公众号里面, 商城里面除了少量的现金业务, 大头在金币业务里面, 商城本来就是用来增加客户粘度的, 金币是客户通过某些行为免费获得如注册, 绑定,推荐等 需求. 金币方面之前的设计: 1.金币只有一个流水表,消费为负,获取为正 2.并且…

常用的表格检测识别方法 - 表格区域检测方法(下)

——书接上文 Training 半监督网络的训练分两步进行&#xff1a;a)对标记数据独立训练学生模块&#xff0c;由教师模块生成伪标签&#xff1b;b)结合两个模块的训练&#xff0c;得到最终的预测结果。 伪标签框架 实验 数据集&#xff1a; TableBank是文档分析领域中用于表识别…

Beats:如何在 Docker 容器中运行 Filebeat

今天在这篇博客中&#xff0c;我们将学习如何在容器环境中运行 Filebeat。 为了快速了解 Filebeat 是做什么用的&#xff1a; Filebeat用于转发和集中日志数据它重量轻&#xff0c;小型化&#xff0c;使用的资源更少它作为代理安装在你的服务器上它监视来自指定位置的日志文件…

腾讯云EdgeOne为什么能让客户降本增效?

随着数字化时代的来临&#xff0c;各类线上互动场景不断出现&#xff0c;并成为人们日常工作生活中的一部分。然而&#xff0c;基于互联网提供线上娱乐、线上办公、线上购物等服务的企业&#xff0c;在复杂的全球网络环境下会遇到网络延迟不稳定的情况&#xff0c;海外环境更多…

QGIS安装与简单使用流程

QGIS工具是我们地图业务领域比用的工具之一&#xff0c;理论就先不介绍了&#xff0c;今天主要介绍安装使用等基本操作&#xff1a; 一、下载安装 1、官网下载 Download QGIS 显示页面&#xff1a; 可以选择不同版本。我们以3.28为例&#xff0c;点击进入&#xff1a; 点击…

【hive】hive order、sort、distribute、cluster by区别与联系

​ 1、order by hive中的order by 会对查询结果集执行一个全局排序&#xff0c;这也就是说所有的数据都通过一个reduce进行处理的过程&#xff0c;对于大数据集&#xff0c;这个过程将消耗很大的时间来执行。 2、sort by hive的sort by 也就是执行一个局部排序过程。这可以…

怎么将heic格式转化jpg,5种方法立马学

将HEIC格式转换为JPG格式是非常必要的。首先&#xff0c;HEIC&#xff08;.heic&#xff09;格式是苹果最新推出的图像格式。与JPEG相比&#xff0c;HEIC可以存储更多的图像信息&#xff0c;同时还支持透明度、深度和动态范围等功能。但由于HEIC格式相对较新&#xff0c;许多设…

Rust之泛型、特性和生命期(二):通用数据类型

开发环境 Windows 10Rust 1.69.0 VS Code 1.78.2 项目工程 这里继续沿用上次工程rust-demo 通用数据类型 我们使用泛型来为函数签名或结构等项目创建定义&#xff0c;然后我们可以将其用于许多不同的具体数据类型。让我们首先看看如何使用泛型来定义函数、结构、枚举和方法。…

27K 入职字节的那天,我哭了····

先说一下自己的个人情况&#xff0c;计算机专业&#xff0c;18年本科毕业&#xff0c;一毕业就进入了“阿里”测试岗(进去才知道是接了个阿里外包项目&#xff0c;可是刚毕业谁知道什么外包不外包的)。 更悲催的是&#xff1a;刚入职因为家里出现一些变故&#xff0c;没有精力…

【软件测试】Python自动化软件测试算是程序员吗?

今天早上一觉醒来&#xff0c;突然萌生一个念头&#xff0c;【软件测试】软件测试算是程序员吗&#xff1f;左思右想&#xff0c;总感觉哪里不对。做了这么久的软件测试&#xff0c;还真没深究过这个问题。 基于&#xff0c;内事问百度的准则&#xff1a; 结果…… 我刚发出软…

刚测完Bug,就被开除了····

我曾在一家软件公司担任功能测试工程师&#xff0c;经历了三年的工作。在这段时间里&#xff0c;我积累了丰富的测试经验和技能&#xff0c;在团队中也有着不错的表现。然而&#xff0c;最终我却被公司辞退了。 在我入职时&#xff0c;公司还没有建立完善的测试流程和标准。我的…

JVM系列-第10章-垃圾回收概述和相关算法(JVisualVM)

垃圾回收概述 Java 和 C语言的区别&#xff0c;就在于垃圾收集技术和内存动态分配上&#xff0c;C语言没有垃圾收集技术&#xff0c;需要程序员手动的收集。 垃圾收集&#xff0c;不是Java语言的伴生产物。早在1960年&#xff0c;第一门开始使用内存动态分配和垃圾收集技术的L…

【分享】阿里版ChatGPT—通义千问(初体验)

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 在上个月4月7号&#xff0c;木易巷开始申请阿里云大模型开始邀请测试「通义千问」&#xff0c;到今天早上&#xff0c;木易巷收到了申请通过的短信。 官网地址&#xff1a;tongyi.aliyun.com 迫不及待去测试了一下&#xff0c;效…

「直播精选问答」释放数据潜力,助力零售数智升级!

​5月10日的《释放数据潜力&#xff0c;助力零售数智升级》虹科零售专场BI直播课程活动&#xff0c;在各位观众的积极互动与热情反馈中落下帷幕&#xff01; 为激发观众和读者朋友对于零售行业数智化趋势的思考与讨论&#xff0c;真正让BI知识在数字时代得以共享和碰撞&#xf…

MaaS来临,SaaS进入「奇点」时刻|产业深度

大模型热度持续发酵。MaaS的到来&#xff0c;不仅改变了云厂商的竞争格局&#xff0c;SaaS行业也将迎来「奇点」时刻。未来十年&#xff0c;基于MaaS底座&#xff0c;国内SaaS甚至可能会出现Salesforce一样的巨头。 作者|思杭 编辑|皮爷 出品|产业家 大模型热度正在持续发酵。…

阿里云镜像服务下载并安装Go环境

【阿里云镜像】下载并安装Go环境 一、参考链接 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) golang镜像-golang下载地址-golang安装教程-阿里巴巴开源镜像站 (aliyun.com) GO语言安装以及国内镜像 - DbWong_0918 - 博客园 (cnblogs.com) 二、Go介绍 Gol…

vscode使用git对代码进行管理

2、暂存自己更改&#xff1b;3、拉取别人的代码&#xff0c;防止别人更改代码合并时发生冲突&#xff1b;4、上传自己的更改并合并代码

深度学习在自然语言处理方面的应用

前言 自然语言处理是一种将自然语言转换为计算机可处理的形式的技术。深度学习是一种非常强大的机器学习技术&#xff0c;它在自然语言处理方面也有广泛的应用。本文将详细介绍深度学习在自然语言处理方面的应用。 自然语言处理的基本步骤 自然语言处理的基本步骤包括分词、词…

智能驾驶汽车的系统开发与验证软件PreScan2022版

Simcenter Prescan是基于物理学的最佳仿真平台&#xff0c;在桌面、集群和云端&#xff0c;用于智能驾驶车辆开发&#xff0c;于2022年三月宣布发布2022.1版本。Simcenter Prescan 2022.1引入了与SUMO的协同仿真&#xff0c;用于自动生成交通&#xff0c;并配有程序化的脚本&am…

RestTemplate使用详解

文章目录 1.1 RestTemplate环境准备1&#xff09;背景说明2&#xff09;工程配置RestTemplate 1.2 RestTemplate API入门-11&#xff09;get请求携带参数访问外部url2&#xff09;get请求响应数据自动封装vo实体对象3&#xff09;请求头携带参数访问外部接口 1.3 RestTemplate …