在线接口文档预言方案

2024-03-28 23:04

本文主要是介绍在线接口文档预言方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在线接口文档预言方案

要求:

​ 支持自动生成接口文档

​ 能够支持在线测试(http,websocket)

​ 对代码没有侵入性

一、目前涉及的相关技术收集

sudo apt update #更新数据
sudo apt upgrade #更新软件
sudo apt install openssh-server #下载安装ssh服务的服务器
sudo apt install openssh-client #下载安装ssh服务的客户端

二、落地 doxygen

1、vscode中安装doxygen插件,设置生成doxygen快捷键,

2、网上学习doxygen的注释字节进行接口注释的编写,

3、新建目录来编译doxygen为可执行程序从而每次接口更新执行执行doxygen即可。

  • sudo apt install doxygen
  • sudo apt install graphviz
  • sudo apt install doxy-doc

4、生成文档,

cmake …

make doc

既可以在build下生成html文件夹。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Doxyfile.in doxygen 的配置文件格式

PROJECT_NAME           = "@CMAKE_PROJECT_NAME@"
PROJECT_NUMBER         = @MAJOR_VERSION@.@MINJOR_VERSION@.@PATCH_VERSION@.@BUILD_VERSION@INPUT                  = @doxy_main_page@ \@CMAKE_CURRENT_LIST_DIR@  \@SrcFile@ 
FILE_PATTERNS          = *.hpp
RECURSIVE              = YES
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
EXCLUDE_PATTERNS       = */thirdpart/*
USE_MDFILE_AS_MAINPAGE = @doxy_main_page@
INPUT_ENCODING         = UTF-8
OUTPUT_LANGUAGE        = Chinese

CMakeLists.txt

cmake_minimum_required (VERSION 3.10)message(STATUS "Build documentation open")
#SrcFile  表示需要解析的目录
set(SrcFile ${CMAKE_CURRENT_LIST_DIR}/../src)include(build_doxygen.cmake)
build_doxygen()

build_doxygen.cmake

macro(build_doxygen)FIND_PACKAGE(Doxygen)
IF(${DOXYGEN_FOUND})SET(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)SET(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)CONFIGURE_FILE(${doxyfile_in} ${doxyfile} @ONLY)ADD_CUSTOM_TARGET(docCOMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}COMMENT "Generating API documentation with Doxygen"VERBATIM)install(CODE "execute_process(COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}COMMAND_ECHO STDOUTWORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build/)")INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_PREFIX}/doc)
else()
MESSAGE(WARNING "Doxygen is needed to build the documentation.Run sudo apt-get install doxygen doxygen-doc doxygen-gui graphviz")
ENDIF()endmacro()

查阅:

cmake使用doxygen生成document_doxygen cmake_六月的雨唯你的博客-CSDN博客

Doxygen 注释语法规范 - schips - 博客园 (cnblogs.com)‘

三、落地apidoc

apidoc 官网:apidoc/apidoc: RESTful web API Documentation Generator. (github.com)

1、安装nodejs,因为后面apidoc也是通过nodejs安装最好版本对应,不然会出现错
安装14.2版本

https://blog.csdn.net/qq_36553707/article/details/122849920

2、npm下载apidoc

sudo npm install apidoc -g

3、直接修改执行程序 apidoc (find搜索一下即可)中defaultIncludeFilters 属性,添加hpp,并在解析的时候加上-f “.hpp”

4、安装nginx,将apidoc生成的html发布到web上

nginx安装 https://blog.csdn.net/qq_36553707/article/details/122849920
nginx配置服务 https://blog.csdn.net/qqq2018/article/details/106245836

打开/etc/nginx/nginx.conf,在http的大括号最后加入server配置
server {listen 8080;server_name example.com;  # 替换为你的域名location / {root /home/speedbot/workcode/apidoc-demo/apidoc;  # 替换为你 HTML 文件所在的目录index index.html;}
}

5、测试dapr服务的 http 接口如何访问

https://www.cnblogs.com/magicbowie/p/15596792.html
https://v1-5.docs.dapr.io/zh-hans/reference/api/service_invocation_api/

6、进行在线测试(目前因为dapr跨越问题无法测试,websocket 不支持)

7、支持post和get两种方式,

apidoc升级

进入容器/opt/source/apidoc 替换需要修改的文件即可。

四、落地oat++swaggercpp

直接参考:C++ RESTful web service with Swagger-UI and auto-documented endpoints | oatpp (medium.com)

主要需下载1.1.0版本的oat++和oatswagger,否则会出现一些错误或者编译条件的约束。

接入比较复杂。

五、总结

最后可能还是使用apidoc,只是需要修改源码来增加websocket部分的连接通信。

这篇关于在线接口文档预言方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856938

相关文章

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构