aag*_*era 9 java rest spring json spring-restdocs
我使用Spring REST Docs来记录REST API.我正在尝试记录以下API操作:
GET /subsystems
GET /subsystems/some_name
Run Code Online (Sandbox Code Playgroud)
例如,调用GET /subsystems/samba返回以下JSON对象:
{
"id": "samba",
"description": "..."
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码片段来使用Spring REST Docs来记录此API操作:
this.mockMvc.perform(
get("/subsystems/samba").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andDo(
document("subsystem").withResponseFields(
fieldWithPath("id").description("Subsystem name"),
fieldWithPath("description").description("Subsystem description")));
Run Code Online (Sandbox Code Playgroud)
我的问题是第一个操作:调用GET /subsystems返回一个JSON数组:
[
{
"id" : "samba",
"description" : "..."
},
{ "id" : "ownCloud",
"description" : "..."
},
{ "id" : "ldap",
"description" : "..."
}
]
Run Code Online (Sandbox Code Playgroud)
我找不到任何显示如何在Spring REST Docs文档中记录此类结果的示例.我该怎么办?
Mic*_*ons 19
Spring Rest Doc 1.0完全可以实现这一点
this.mockMvc.perform(
get("/subsystems").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andDo(
document("subsystem").withResponseFields(
fieldWithPath("[].id").description("Subsystem name"),
fieldWithPath("[].description").description("Subsystem description")));
Run Code Online (Sandbox Code Playgroud)
要记录阵列本身,请使用
this.mockMvc.perform(
get("/subsystems").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andDo(
document("subsystem").withResponseFields(
fieldWithPath("[]").description("An array of subsystems"),
fieldWithPath("[].id").ignore(),
fieldWithPath("[].description").ignore()));
Run Code Online (Sandbox Code Playgroud)
如果您只想记录数组本身,我忽略了其他两个字段.您也可以将两种解决方案结合起来.
请享用.
编辑:我从Andy Wilkinson那里了解到,如果您记录顶级数组,则所有字段都标记为已记录.因此,如果您只想记录数组,则可以安全地跳过忽略.
| 归档时间: |
|
| 查看次数: |
5310 次 |
| 最近记录: |