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. UOJ #219 BZOJ 4650 luogu P1117 [NOI2016]优秀的拆分 (后缀数组、ST表)

    连NOI Day1T1都不会做...看了题解都写不出来还要抄Claris的代码.. 题目链接: (luogu)https://www.luogu.org/problemnew/show/P1117 ( ...

  2. 和socket、rs232通信遇到的糟糕问题。备查!

    procedure Tfrm_FoldingCloth.btn1Click(Sender: TObject); var SND:array of byte; begin if Not cnrs232. ...

  3. 0929MySQL JOIN的算法

    http://www.cnblogs.com/starhu/p/6418842.html http://www.cnblogs.com/starhu/p/6418833.html http://www ...

  4. POJ 3207

    还是那句话,做2SAT题时,找出矛盾点基本上可解了.这道题也是这样 题意是说给出一个圆上的 n 个点(0~n-1编号),然后在指定的 m 对点之间各连一条线(可以在圆内,也可以在圆外,可以是曲线,这点 ...

  5. no projects are found to import

    从svn上导出的项目在导入Eclipse中常常出现 no projects are found to import . 产生的原因是:项目文件里中没有".classpath"和&q ...

  6. 解题报告 之 HDU5303 Delicious Apples

    解题报告 之 HDU5303 Delicious Apples Description There are n apple trees planted along a cyclic road, whi ...

  7. 利用GDAL实现影像的几何校正

    一.概述 遥感影像和地理坐标进行关联的方式一般有好几种,一种是直接给出了仿射变换系数,即6个參数,左上角地理坐标,纵横方向上的分辨率,以及旋转系数.在这样的情况下,求出某一像素点的地理坐标非常easy ...

  8. Linux中的默认权限与隐藏权限(文件、文件夹)

    一个文件(或文件夹)拥有若干个属性.包含(r/w/x)等基本属性,以及是否为文件夹(d)与文件(-)或连接文件(l)等属性.此外,Linux还能够设置其它系统安全属性.使用chattr来设置.以lsa ...

  9. DotNetBar.Bar菜单的使用

    DotNetBar.Bar菜单的使用 老帅     在C#中使用控件DevComponents.DotNetBar.Bar时,怎样设计菜单呢?      1.拖放生成一个菜单容器      拖放一个D ...

  10. Java Break和continue实现goto功能

    continue实验 1 public class test { static int i =0; public static void main(String[] args) { lable1: w ...