Повторяющиеся параметры запроса записываются во фрагмент
Как видно из названия, у меня есть конечная точка контроллера, которую я пытаюсь задокументировать. Конечная точка может принимать 2 параметра, оба являются необязательными. Когда идет генерация кода, параметр дублируется.
контроллер
@RequestMapping("/bitbucket/project")
public Project findProject(@RequestParam(value = "key", required = false) String key,
@RequestParam(value = "name", required = false) String name)
{
if (!StringUtils.isEmpty(key))
{
try
{
Project project = projectService.findProjectByKey(key);
if (project == null)
{
throw new NotFoundException("Project not found");
}
else
{
return project;
}
}
catch (IOException e)
{
LOG.error(e.getMessage(), e);
throw new ServerException(e.getMessage());
}
}
else if (!StringUtils.isEmpty(name))
{
try
{
Project project = projectService.findProjectByName(name);
if (project == null)
{
throw new NotFoundException("Project not found");
}
else
{
return project;
}
}
catch (IOException e)
{
LOG.error(e.getMessage(), e);
throw new ServerException(e.getMessage());
}
}
else
{
throw new BadRequestException("Project not found");
}
}
Документация
@Rule
public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
"target/generated-snippets");
private RestDocumentationResultHandler document;
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@Before
public void setUp()
{
this.document = document("{method-name}", preprocessRequest(prettyPrint()),
preprocessResponse(prettyPrint()));
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
.apply(documentationConfiguration(this.restDocumentation))
.alwaysDo(this.document).build();
}
@Test
public void findProjectKey() throws Exception
{
String projectKey = "KEY";
when(projectService.findProjectByKey(anyString()))
.thenReturn(createProject(projectKey, null, false));
getMockMvc().perform(get("/bitbucket/project").param("key", projectKey))
.andExpect(status().isOk());
}
А вот сгенерированный фрагмент для http-request.adoc
[source,http,options="nowrap"]
----
GET /bitbucket/project?key=KEY&key=KEY HTTP/1.1
Host: localhost:8080
----
Запуск Spring Boot 1.4.0 и Rest Docs 1.1.1
1 ответ
Решение
Это было связано с ошибкой в 1.1.1. Обновление до 1.1.2 решит проблему.