Swagger показывает дополнительные параметры в теле запроса - PullRequest
0 голосов
/ 21 февраля 2019

Мы используем springfox-swagger-ui и springfox-swagger2 версии 2.7.0.

Post API имеет следующую подпись:

@ApiOperation("Edits information about employees")
@PostMapping(path = "/employee/edit", headers = EndPoints.VERSION_1)
@ApiResponses(value = {
    @ApiResponse(code = 409, message = "Data mismatch"),
    @ApiResponse(code = 400, message = "Invalid data passed")
})
public ResponseEntity<Employee> manageEmployee(
        @RequestHeader("employeeId") final String iEmployeeId,
        @RequestBody(required = true) @Valid final Employee iEmployee) 

Объект-сотрудник:

public class Employee implements Serializable {

    private static final long serialVersionUID = -7315844547195801413L;

    private String employeeName;
    private Long employeeId;
    private @Valid @NotNull List<Address> addresses;

    // getter and setter methods

    @Validated
    public static class Address implements Serializable {

        private static final long serialVersionUID = 6748945632164495934L;

        private String addressId;

        @ValidAddress
        private String addressName;

        //getter and setter methods
    }
}

Но swagger показывает тело запроса следующим образом:

{
 "addresses": {
   "addressId": "string",
   "addressName": "string",
   "permanentAddress": [
      {
        "addressId": "string",
        "addressName": "string"
      }
   ]
  },
 "employeeName": "string",
 "employeeId": 0
}

Объект constantAddress отсутствует в моем коде.Как это можно решить?

1 Ответ

0 голосов
/ 27 февраля 2019

Прежде чем задаться вопросом, почему permantnAddress, я думаю, что более важно выяснить, почему адреса являются объектом addressId, addressName и списком Address.Что-то не так в JSON.

Объект Employee выглядит следующим образом:

{
  addresses: [
    addressId: "string",
    addressName: "string"
  ],
  employeeName: "string",
  employeeId: 0
}

constantAddress - правильный объект для списка адресов

...