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自定义代码片段的更多相关文章

  1. Sublime Text3—Code Snippets(自定义代码片段)

    摘要 程序员总是会不断的重复写一些简单的代码片段,为了提高编码效率,我们可以把经常用到的代码保存起来再调用. 平时用sublime安装各种插件,使用Tab键快速补全,便是snippets(可译为代码片 ...

  2. pycharm自定义代码片段

    pycharm自定义代码片段 目录 (一)通用阶段 0 .新建.py文件模板:2 0 .pycharm中添加自定义代码片段:一图全知道:3 1 .定义类:classin              描述 ...

  3. vscode自定义代码片段,自定义注释片段(动态时间)

    下载vscode 一.打开vscode,点击左下角设置图标. 二.点击用户代码片段 三.点击新建全局代码片段文件 四.输入自定义代码片段配置文件名,例如:vue.json 五.进行代码片段配置示例如下 ...

  4. SQL Prompt自定义代码片段

    新增代码片段: 代码片段管理: 代码片段中可以使用以下占位符:详见参考: $DATE$ 插入当前日期. $TIME$ 插入当前时间 $USER$ 插入当前电脑的用户名 $PASTE$ 插入剪切板内容 ...

  5. VS 2013 中如何自定义代码片段

    1.菜单 工具->代码段管理器

  6. Sublime Text3自定义代码片段

    1.打开工具--插件开发--新建代码片段 会出现下图: 2.在<![CDATA[和]]>内写下你要的代码片段,注意的是代码片段要靠最左边. 3.设置快捷键,把下面tabTrigger标签的 ...

  7. sublime text 2自定义代码片段

    本文引用   http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_tex ...

  8. VS2017自定义代码片段, 实现快捷输入

    点击VS2017的工具→代码片段管理器, 下图: 语言选择C#, 路径定位到 Visual C#, 然后复制这个路径在电脑中打开 这里以增加 crk 快捷方式输出 Console.ReadKey()来 ...

  9. chrome devtools tip(2)--自定义代码片段,构建你的工具箱

    平常开发中,有些代码片段常常用到的,比如,获取 url 参数,rgb转16进制,打印下当前页面的性能数据,给所有的 span 加个样式, 防抖节流,fetch接口,类似 jquery这样的顺手 选择 ...

随机推荐

  1. DateTime日期格式转换,不受系统格式的影响

    Application.Initialize;  with FormatSettings do  begin    ShortDateFormat := 'yyyy-mm-dd';    LongDa ...

  2. Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较

    SSH和SSM定义 SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. SSM 则指的是 SpringMVC 做控制 ...

  3. 洛谷 P2483 BZOJ 1975 [SDOI2010]魔法猪学院

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  4. [bzoj1001][BeiJing2006]狼抓兔子_网络流_最小割转对偶图

    狼抓兔子 bzoj-1001 BeiJing2006 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...

  5. Oracle-表更名、转存数据

    --更名 ALTER TABLE T_LOGSRV_SERVICE RENAME TO T_LOGSRV_SERVICE_20170418_BAK; --创建同样的表 ;

  6. Linux磁盘分区方案(转)

    硬盘分区的各个分区的意义 尽管可以根据我们已经提到的分区原则,Linux装在一个单一的大分区中,但更好的主意是将它分开.综合了单一分区的简单性和多分区的灵活性,我们推荐以下配置.请注意:如果你想安装L ...

  7. 在AIX下面查询上一次命令

    在AIX下面查询上一次命令 输入 r 或者 set -o vi 用vi的操作找上一次命令: 学习了: http://blog.itpub.net/66634/viewspace-1000843/ ht ...

  8. [Javascript Crocks] Apply a function in a Maybe context to Maybe inputs (curry & ap & liftA2)

    Functions are first class in JavaScript. This means we can treat a function like any other data. Thi ...

  9. 关于View的ScrollTo, getScrollX 和 getScrollY

    下载地址:源代码 当利用 Scroller 去滑动屏幕或者扩展 ScrollView 的时候,总是会用到 getScrollX 和 getScrollY 去获取当前View 滑动到的位置,那么getS ...

  10. Linux shell脚本中shift的用法说明【转】

    本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235 Linux shell脚本中shift的用法说明 shift命令用于对参数的移动 ...