Spring REST Doc безымянный параметр запроса

Я пишу документацию по своей службе отдыха, используя ссылку Библиотека Spring REST Docs.

У меня проблема в том, что я принимаю запрос POST со структурой JSON в качестве входных данных, у которых нет имени.

Запрос выглядит примерно так:

POST /images?limit=3&offset=12 HTTP/1.1
Content-Type: application/json
Host: localhost:8080
Content-Length: 289

{"acquisitionWindow":0,"platformName":"myPlatform","requireImageFile":false,"requireImageFileOrQuicklook":false,"strictPolygon":false,"showInternal":false,"imageNames":["%"],"startTimeOfYear":0,"stopTimeOfYear":0,"resolutionLowerBound":0.0,"resolutionUpperBound":0.0,"reducedResolution":0}

Я хотел бы задокументировать структуру ввода, но пока не нашел способа сделать это.

В документации описано что-то вроде этого:

this.mockMvc.perform(get("/users?page=2&per_page=100")) 
    .andExpect(status().isOk())
    .andDo(document("users", requestParameters( 
            parameterWithName("page").description("The page to retrieve"), 
            parameterWithName("per_page").description("Entries per page") 
    )));

Но у моего параметра нет имени.

Что я пытался далеко:

requestParameters(
    // TODO: Insert ImageSearch here
    parameterWithName("{}").description("ImageSearch Structure "))

Я также пробовал с пустым именем ("") и записью массива ("[]"). Пока не повезло.

Можно ли задокументировать неназванные параметры или мне следует обернуть их в другую структуру?

Спасибо,


person jlengrand    schedule 05.10.2016    source источник
comment
Я не уверен, что понял, что такое безымянный параметр. Это JSON в теле запроса POST?   -  person Andy Wilkinson    schedule 05.10.2016
comment
Да! Весь объект json называется ImageSearch на внутренней стороне. Этот объект содержит множество параметров поиска.   -  person jlengrand    schedule 05.10.2016


Ответы (1)


Вы можете использовать requestFields на org.springframework.restdocs.payload.PayloadDocumentation для документирования полезной нагрузки JSON, отправленной в запросе. Например:

this.mockMvc.perform(get("/users?page=2&per_page=100")) 
    .andExpect(status().isOk())
    .andDo(document("users", requestFields( 
            fieldWithPath("acquisitionWindow").description("…"), 
            fieldWithPath("platformName").description("…"))));

См. Раздел документации о полезных нагрузках запросов и ответов для получения дополнительной информации.

person Andy Wilkinson    schedule 05.10.2016
comment
Хорошо, так что вы подтверждаете то, что я имел в виду. Если я предпочитаю документировать эти элементы как отдельный объект в моей документации, я должен вручную (статически) указать объект JSON верхнего уровня как ImageSearch. Спасибо - person jlengrand; 10.10.2016