Spring restdocs使用asciidoc

时间:2016-06-21 07:38:54

标签: java maven rest-assured asciidoctor spring-restdocs

我使用spring restdocs在我的REST webapi上生成文档;我已经整合了这个东西,我的html生成了(maven + asciidoc插件,重新安装的apis)。 我唯一的问题是,ifeval要么不像宣传的那样工作,要么我弄错了。

我的自定义request-fields.snippet看起来像这样:

|===
|Path|Type|Description|Optional

{{#fields}}
 |{{#tableCellContent}}
ifeval::["{optional}"=="true"]
   `{{path}}`
endif::[]
ifeval::["{optional}"="false"]
   *`{{path}}`*
endif::[]
  {{/tableCellContent}}
  |{{#tableCellContent}}`{{type}}`{{/tableCellContent}}
  |{{#tableCellContent}}{{description}}{{/tableCellContent}}
  |{{#tableCellContent}}{{optional}}{{/tableCellContent}}

{{/fields}}
|===

'可选' tablecellcontent中的值被正确呈现(' true'或' false'取决于具体情况),但ifeval未被解析(因此在最终的html上显示自己未解析,没有误差)。

我为表达式尝试了不同的语法,但似乎都没有用;关于可能是正确语法的任何提示,如果有的话? 我正在考虑定义一个自定义属性并使用ifndef来获得相同的结果,但我希望尽可能使用现有的optional()支持。

根据要求,我将添加生成的.adoc

|===
|Path|Type|Description|Optional

|
ifeval::["{optional}"=="true"]
   `name`
endif::[]
ifeval::["{optional}"=="false"]
   *`name`*
endif::[]
|`String`
|Name of the new Axis
|false

|
ifeval::["{optional}"=="true"]
   `description`
endif::[]
ifeval::["{optional}"=="false"]
   *`description`*
endif::[]
|`String`
|Description of the new Axis
|true

|
ifeval::["{optional}"=="true"]
   `tags[]`
endif::[]
ifeval::["{optional}"=="false"]
   *`tags[]`*
endif::[]
|`TagDto[]`
|Hierarchical view of axis' tags
|false

|
ifeval::["{optional}"=="true"]
   `tags[].id`
endif::[]
ifeval::["{optional}"=="false"]
   *`tags[].id`*
endif::[]
|`Number`
|Id of the tag
|false

|
ifeval::["{optional}"=="true"]
   `tags[].name`
endif::[]
ifeval::["{optional}"=="false"]
   *`tags[].name`*
endif::[]
|`String`
|Name of the tag
|false

|
ifeval::["{optional}"=="true"]
   `tags[].children`
endif::[]
ifeval::["{optional}"=="false"]
   *`tags[].children`*
endif::[]
|`TagDto[]`
|Child tags for this tag, if any
|true

|===

1 个答案:

答案 0 :(得分:2)

问题出在自定义模板中,您在{optional}宏中使用{{optional}}而不是ifeval。这意味着{optional}未被字段的optional属性替换,因此,Asciidoctor正在评估"{optional}"=="true""{optional}"=="false"

您需要更新模板才能使用{{optional}}

|===
|Path|Type|Description|Optional

{{#fields}}
 |{{#tableCellContent}}
ifeval::["{{optional}}"=="true"]
   `{{path}}`
endif::[]
ifeval::["{{optional}}"=="false"]
   *`{{path}}`*
endif::[]
  {{/tableCellContent}}
  |{{#tableCellContent}}`{{type}}`{{/tableCellContent}}
  |{{#tableCellContent}}{{description}}{{/tableCellContent}}
  |{{#tableCellContent}}{{optional}}{{/tableCellContent}}

{{/fields}}
|===