博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
企业级SpringBoot教程 (十)用spring Restdocs创建API文档
阅读量:5845 次
发布时间:2019-06-18

本文共 2216 字,大约阅读时间需要 7 分钟。

hot3.png

这篇文章将带你了解如何用spring官方推荐的restdoc去生成api文档。本文创建一个简单的springboot工程,将http接口通过Api文档暴露出来。只需要通过 JUnit单元测试和Spring的MockMVC就可以生成文档。

准备工作

  • 你需要15min
  • Jdk 1.8
  • maven 3.0+
  • idea

创建工程

引入依赖,其pom文件:

通过@SpringBootApplication,开启springboot

org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.restdocs
spring-restdocs-mockmvc
test

通过@SpringBootApplication,开启springboot

@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

在springboot通常创建一个controller:

@RestControllerpublic class HomeController {``    @GetMapping("/")    public Map
greeting() { return Collections.singletonMap("message", "Hello World"); }}

启动工程,访问localhost:8080,浏览器显示:

{“message”:”Hello World”}

证明接口已经写好了,但是如何通过restdoc生存api文档呢

Restdoc,通过单元测试生成api文档 restdocs是通过单元测试生存snippets文件,然后snippets根据插件生成htm文档的。

建一个单元测试类:

@RunWith(SpringRunner.class)@WebMvcTest(HomeController.class)@AutoConfigureRestDocs(outputDir = "target/snippets")public class WebLayerTest {    @Autowired    private MockMvc mockMvc;    @Test    public void shouldReturnDefaultMessage() throws Exception {        this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())                .andExpect(content().string(containsString("Hello World")))                .andDo(document("home"));    }}

其中,@ AutoConfigureRestDocs注解开启了生成snippets文件,并指定了存放位置。

启动单元测试,测试通过,你会发现在target文件下生成了一个snippets文件夹,其目录结构如下:

└── target    └── snippets        └── home            └── httpie-request.adoc            └── curl-request.adoc            └── http-request.adoc            └── http-response.adoc

默认情况下,snippets是Asciidoctor格式的文件,包括request和reponse,另外其他两种httpie和curl两种流行的命令行的http请求模式。 到目前为止,只生成了Snippets文件,需要用Snippets文件生成文档。技术支持1791743380

转载于:https://my.oschina.net/u/3826344/blog/2252728

你可能感兴趣的文章
C接口与实现---内存管理(内存池的实现)
查看>>
保护 Equatable 的实现
查看>>
REST是新SOAP?
查看>>
币圈装X指南:比特币的30个小故事
查看>>
Visual Studio 15.8 Preview 3支持多点编辑功能
查看>>
马蜂窝张矗:绩效考核是为了激发工作潜力,而不是逃避问题
查看>>
微软推出Windows Lite,目标Chrome OS上网本
查看>>
金山云最新财报:Q4营收7.27亿,同比增长81%
查看>>
保持分布式团队同步
查看>>
Uber推出数据湖集成神器DBEvents,支持MySQL、Cassandra等
查看>>
全球区块链支出加速增长,2019年预计将接近29亿美元
查看>>
性能翻倍!斯坦福Matei团队推出机器学习模型优化新方法
查看>>
Dependabot:自动创建GitHub PR修复潜在漏洞
查看>>
疲劳、垃圾邮件、备份缺失,拖垮了GitLab.com
查看>>
从Jira到GitHub,详解Spring Framework问题跟踪系统的迁移过程
查看>>
.NET Core 2.1 Preview 2带来网络方面的改进
查看>>
用PVS在.NET内核中发现的缺陷
查看>>
AI立功了!天猫双十一2135亿收官,再创新高
查看>>
More than React(四)HTML也可以静态编译?
查看>>
ChakraCore现在可以在Linux和Mac OS上运行了
查看>>