spring rest docs自定义代码片段
Spring rest docs 文档插件在生成文档时会默认生成6个代码片段,自适应生成其它片段。通过阅读官方文档发现其可以自定义生成的代码片段,但是官方只说了可以自定义模版,修改现有的代码片段的方法。如果需要完全新增一个代码片段并没有说明。
在程序中通过debug发现生成文档的方法 document 其可以接受一个Snippet数组,除了默认的6个代码片段,其它代码片段如request-parameters,response-fields片段都会体现在这个Snippet数组上。
public static RestDocumentationResultHandler document(String identifier, Snippet... snippets) {
return new RestDocumentationResultHandler(new RestDocumentationGenerator(identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER, snippets));
}
由此看出要实现自定义片段只需要实现Snippet接口,并传入document方法就可以了,具体实现如下:
1: 在test的resources下建立org/springframework/restdocs/templates/asciidoctor文件夹,在这里新增一个ajax-example..snippet文件,在这个文件模版中能够通过一个map进行取值,而该map在下面的CustomSnippet的createModel方法生成的。常用语法,通过符号:{{ }} 进行取值,{{#headers}} {{value}} {{/headers}}进行遍历list。注意:::不能取没有的值,会报错
文件内容类似如下:
[source,http,options="nowrap"] ---- 示例1:
$.ajax({
url:'{{path}}',
dataType:'json',
type:'json',
data:{{data}},
success:function(data){
console.log(data)
}
})
示例1:
axios.post('{{path}}',{{data}})
.then((response){
console.log(response.data)
}) ----
2:继承抽象类TemplatedSnippet,类名CustonSippet,实现其createModel方法具体实现如下:
@Override
protected Map<String, Object> createModel(Operation operation) {
Map map = new HashMap();
this.path = operation.getRequest().getUri().toString();
map.put("data",JSONObject.toJSONString(data));
map.put("path",path);
return map;
}
3:调用document方法的创建一个TemplatedSnippet示例,传入模版的名称。
document("{method-name}",requestParameters(
parameterWithName("name").description("姓名")
,parameterWithName("address").description("地址")
,parameterWithName("phone").description("联系电话")
),relaxedResponseFields(
fieldWithPath("app").type("String").description("app代码")
,fieldWithPath("address").type("String").description("地址")
,fieldWithPath("phone").type("String").description("电话")
,fieldWithPath("name").type("String").description("姓名")
),new CustomSnipet("ajax-example","ajax-example",(Map)params.toSingleValueMap())
)
这样在生成代码片段的时候就会生成自定义的代码片段了。
spring rest docs自定义代码片段的更多相关文章
- Sublime Text3—Code Snippets(自定义代码片段)
摘要 程序员总是会不断的重复写一些简单的代码片段,为了提高编码效率,我们可以把经常用到的代码保存起来再调用. 平时用sublime安装各种插件,使用Tab键快速补全,便是snippets(可译为代码片 ...
- pycharm自定义代码片段
pycharm自定义代码片段 目录 (一)通用阶段 0 .新建.py文件模板:2 0 .pycharm中添加自定义代码片段:一图全知道:3 1 .定义类:classin 描述 ...
- vscode自定义代码片段,自定义注释片段(动态时间)
下载vscode 一.打开vscode,点击左下角设置图标. 二.点击用户代码片段 三.点击新建全局代码片段文件 四.输入自定义代码片段配置文件名,例如:vue.json 五.进行代码片段配置示例如下 ...
- SQL Prompt自定义代码片段
新增代码片段: 代码片段管理: 代码片段中可以使用以下占位符:详见参考: $DATE$ 插入当前日期. $TIME$ 插入当前时间 $USER$ 插入当前电脑的用户名 $PASTE$ 插入剪切板内容 ...
- VS 2013 中如何自定义代码片段
1.菜单 工具->代码段管理器
- Sublime Text3自定义代码片段
1.打开工具--插件开发--新建代码片段 会出现下图: 2.在<![CDATA[和]]>内写下你要的代码片段,注意的是代码片段要靠最左边. 3.设置快捷键,把下面tabTrigger标签的 ...
- sublime text 2自定义代码片段
本文引用 http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_tex ...
- VS2017自定义代码片段, 实现快捷输入
点击VS2017的工具→代码片段管理器, 下图: 语言选择C#, 路径定位到 Visual C#, 然后复制这个路径在电脑中打开 这里以增加 crk 快捷方式输出 Console.ReadKey()来 ...
- chrome devtools tip(2)--自定义代码片段,构建你的工具箱
平常开发中,有些代码片段常常用到的,比如,获取 url 参数,rgb转16进制,打印下当前页面的性能数据,给所有的 span 加个样式, 防抖节流,fetch接口,类似 jquery这样的顺手 选择 ...
随机推荐
- Netty学习总结(2)——Netty的高性能架构之道
Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用 ...
- 2015多校联合训练第一场Tricks Device(hdu5294)
题意:给一个无向图,给起点s,终点t,求最少拆掉几条边使得s到不了t,最多拆几条边使得s能到t 思路: 先跑一边最短路,记录最短路中最短的边数.总边数-最短边数就是第二个答案 第一个答案就是在最短路里 ...
- kafka内置的zookeeper
kafka 很多说不需要安装zk的是因为他们都使用了kafka自带的zk 至于kafka为什么使用zk,你首先要知道zk的作用, 作为去中心化的集群模式. 需要要消费者知道现在那些生产者(对于消费者而 ...
- Ruby 写文件
Ruby 写文件 outFile = File.new("fileName.txt","w") outFile.puts "a" outFi ...
- Lightoj 1112 - Curious Robin Hood 【单点改动 + 单点、 区间查询】【树状数组 水题】
1112 - Curious Robin Hood PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 64 MB ...
- luogu1445 [violet]樱花 阶乘分解
题目大意 求方程$$\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$$的正整数解的组数. 思路 咱们把式子整理得$$xy-(x+y)N!=0$$.$xy$和$x+y$?貌似可 ...
- C语言 - .c和.h文件的困惑
本质上没有任何区别. 只不过一般:.h文件是头文件,内含函数声明.宏定义.结构体定义等内容. .c文件是程序文件,内含函数实现,变量定义等内容.而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的 ...
- 基于Websocket的火拼俄罗斯(基础)
传统的HTTP请求是由浏览器发起,然后呢服务端接收到请求之后呢返回一个数据.那么这样一次来回之后呢请求就断了.但是WebSocket它不一样,它同样是由浏览器去发起一个请求但是这个请求是一个WebSo ...
- Eclipse 连接hsqldb数据库
初学Java,在接触数据库根本无从下手,不知如何将程序和数据库连接起来,今天做一个记录. 数据库是:hsqldb_1_8_0_5 附链接百度云盘 链接:https://pan.baidu.com/s/ ...
- Python 生成requirement 使用requirements.txt
第一步:python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号.以便新环境部署. requirements.txt可以通过pip命令自动生成和安装 ...