Как документировать список объектов с помощью Spring Rest Docs - PullRequest
0 голосов
/ 03 мая 2018

Я использую Spring Rest Docs для документирования своего REST API. Я использую mockMVC в своих интегрированных тестах и ​​хочу задокументировать следующий ответ JSON:

GET /api/v1/customers/3b658b39-4264-4995-99d8-90a1672a75a7

{
    "id": "3b658b39-4264-4995-99d8-90a1672a75a7",
    "name": "Foo",
    "nickname": "Bar",
    "phones": [
        {
            "id": "6ca3a963-bacb-4770-a470-5902b4a17b77", 
            "alias": "Personal Phone 1",   
            "countryCode": "55",
            "areaCode": "34",
            "number": "99999-9999"
        },
        {
            "id": "f3a3726b-b5f8-4652-a044-7bf3d95a37de",
            "alias": "Personal Phone 2",    
            "countryCode": "55",
            "areaCode": "34",
            "number": "88888-8888"
        }
    ]
}

Как я могу документировать список телефонов выше? Вы можете использовать следующий фрагмент кода, который использует Spring REST Docs для документирования этой операции API:

this.mockMvc.perform(
    get("/api/v1/customers/3b658b39-4264-4995-99d8-90a1672a75a7")
       .accept(APPLICATION_JSON))
       .andExpect(status().isOk())
           .andDo(document("customer").withResponseFields(
               fieldWithPath("id").description("Unique identifier"),
               fieldWithPath("name").description("Customer full name"),
               fieldWithPath("nickname").description("How the customer wants to be called")));

1 Ответ

0 голосов
/ 03 мая 2018

По этой ссылке https://docs.spring.io/spring-restdocs/docs/current/reference/html5/#documenting-your-api-request-response-payloads-fields-json

При документировании вложенных объектов массива вы можете использовать так:

this.mockMvc.perform(
get("/api/v1/customers/3b658b39-4264-4995-99d8-90a1672a75a7")
   .accept(APPLICATION_JSON))
   .andExpect(status().isOk())
       .andDo(document("customer").withResponseFields(
           fieldWithPath("id").description("Unique identifier"),
           fieldWithPath("name").description("Customer full name"),
           fieldWithPath("nickname").description("How the customer wants to be called"),
           fieldWithPath("phones[].id").description("PHONE ID DESCRIPTION"),
           fieldWithPath("phones[].alias").description("PHONE ALIAS DESCRIPTION"),
           fieldWithPath("phones[].countryCode").description("PHONE COUNTRY CODE DESCRIPTION"),
           fieldWithPath("phones[].areaCode").description("PHONE AREA CODE DESCRIPTION")
           fieldWithPath("phones[].number").description("PHONE NUMBER DESCRIPTION")
        ));
...