Как передать тело запроса с многоуровневыми данными с помощью rest-assured

#rest #rest-assured

#rest #будьте уверены

Вопрос:

Попытка отправить тело запроса с многоуровневыми данными с помощью rest-assured следующим образом.

Тело запроса:

 {
  "phoneNumber":1217071016,
  "details":
  [
    {
            "id":"123",
        "name":"New",
        "email":"hello@gmail.com"
    },

    {
         "id":"234",
      "name":"next",
      "email":"next@gmail.com"
    }


  ]

}
  

@Test public void generateToken() {

   Map<String,String> userDetails = new HashMap<>();

  userDetails.put("phoneNumber", "1217071016");
  userDetails.put("details.Id", "241342");
  userDetails.put("details.name", "New Name");
  userDetails.put("details.email", "eclipse@test.com");

          Response response = given()

          .contentType("application/json")

          .queryParam("access_token", "LL6rX8LRP7")

          .body(userDetails)

          .post("http://site/rest/try/update");
  

}

При отправке вышеуказанным способом, получение неверного запроса.

Как передать такого рода данные в приведенном выше коде

Комментарии:

1. Вы включили ведение журнала для запросов и ответов? Как именно они выглядят?

2. @RocketRaccoon не регистрирует запрос. Не уверен, как распечатать запрос. Можете ли вы направить меня

3. Используйте given().log().all()

4. Тело похоже { "msISDN": "1217071016", "rms.rmEmail": "eclipse@test.com", "rms.rmId": "241342", "rms.rmLastName": "fjkenrfiw", "rms.rmFirstName": "New Name" } на тело, указанное выше

Ответ №1:

Вам нужно не a Map<String, String> , а Map<String, Object> :

 Map<String, Object> userDetails = new HashMap<>();
Map<String, Object> details = new HashMap<>();

details.put("id", "241342");
details.put("name", "New Name");
details.put("email", "eclipse@test.com");

userDetails.put("phoneNumber", "1217071016");
userDetails.put("details", Arrays.asList(details, details));
  

Комментарии:

1. тем не менее, тело создается неправильно. Тело: { "email": "eclipse@test.com", "name": "fjkenrfiw", "id": "4434353535543" }

2. кажется, вы добавляете только details карту в запрос, она должна быть userDetails

3. извините, что пропустил это. эти фигурные скобки [ ] не заполняются в теле. Если они заполняются, тогда тело должно быть правильным. { "phoneNumber": "1217071016", "details": { "email": "eclipse@test.com", "name": "fjkenrfiw", "id": "4434353535543" } } Также меняется порядок тела. Есть ли способ отсортировать это.

4. просто используйте Array в качестве значения, исправленного в ответе