swagger-ui生成的接口文档想来大家用者不少,但是有时候需要打印或者各种需求,那么怎么转换成html或者word格式呢,下面带大家一起看一下(代码可直接复制使用,部分已标注地方需根据各自项目进行修改)。
创建3个实体类+1个html
新建3个实体类和1个html文件,html文件可放在resources下的static包中。实体类参数用于接收接口数据,不建议修改。
package good.doctor.test.config;
import lombok.Data;
@Data
public class SwaggerRequest {
/**
* 请求参数
*/
private String description;
/**
* 参数名
*/
private String name;
/**
* 数据类型
*/
private String type;
/**
* 参数类型
*/
private String paramType;
/**
* 是否必填
*/
private Boolean require;
/**
* 说明
*/
private String remark;
}
package good.doctor.test.config;
import lombok.Data;
@Data
public class SwaggerResponse {
/**
* 返回参数
*/
private String description;
/**
* 参数名
*/
private String name;
/**
* 说明
*/
private String remark;
public SwaggerResponse(String description, String name, String remark) {
this.description = description;
this.name = name;
this.remark = remark;
}
}
package good.doctor.test.config;
import lombok.Data;
import java.util.List;
@Data
public class SwaggerTable {
/**
* 大标题
*/
private String title;
/**
* 小标题
*/
private String tag;
/**
* url
*/
private String url;
/**
* 响应参数格式
*/
private String responseForm;
/**
* 请求方式
*/
private String requestType;
/**
* 请求体
*/
private List<SwaggerRequest> swaggerRequestList;
/**
* 返回体
*/
private List<SwaggerResponse> swaggerResponseList;
/**
* 请求参数
*/
private String requestParam;
/**
* 返回值
*/
private String responseParam;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>接口文档</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<div id="app">
<div class="item" v-for="(item,i) in data" :key="i">
<h4>{
{
i + 1 }}、{
{
item.title }}:{
{
item.url }}</h4>
<table cellspacing="0" cellpadding="0" border="1" id="out-table">
<thead class="bg">
<tr>
<th colspan="6">{
{
item.tag }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>URL</td>
<td colspan="5">{
{
item.url }}</td>
</tr>
<tr>
<td>请求方式</td>
<td colspan="5">{
{
item.responseForm }}</td>
</tr>
<tr>
<td>返回值类型</td>
<td colspan="5">{
{
item.requestType }}</td>
</tr>
<tr class="bg">
<td>请求参数</td>
<td>参数名</td>
<td>数据类型</td>
<td>参数类型</td>
<td>是否必填</td>
<td>说明</td>
</tr>
<tr v-for="(r,inIndex) in item.swaggerRequestList">
<td>{
{
r.description }}</td>
<td>{
{
r.name }}