2016-10-05 3 views
0

Я пишу документацию моего сервиса отдыха, используя Spring REST Docs library.Spring REST Doc unamed request parameter

Проблема заключается в том, что я принимаю запрос 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 ")) 

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

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

Спасибо,

+0

Я не уверен, что понял, что такое безымянный параметр. Является ли это JSON в теле запроса POST? –

+0

Да! Весь объект json называется ImageSearch на стороне сервера. Этот объект содержит множество параметров поиска. – jlengrand

ответ

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("…")))); 

Смотрите Request and response payloads section of the documentation для некоторых дальнейших подробностей.

+0

Хорошо, поэтому вы подтверждаете, что я имел в виду. Если я предпочитаю документировать эти элементы как отдельный объект в своей документации, мне приходится вручную (статически) указывать объект JSON верхнего уровня как ImageSearch. благодаря – jlengrand

Смежные вопросы