Весенний отдых DTO могут быть двунаправленными? - PullRequest
0 голосов
/ 25 апреля 2020

Я очень новичок в Spring REST Api. Пара сомнений:

DOUBT1:

class UserDTO {
    long id;
    String name;
    int age;

    // getters and setters
}

CASE1:

public void doSomethng(@RequestBody UserDTO userDTO){
    repository.findById(userDTO.getId());
}

CASE2:

public void doSomethng(@RequestBody long id){ //Is this correct?
    repository.findById(id);
}

CASE3:

public void doSomethng(@RequestBody Map<Long, Object> map){ //Is this correct?
    repository.findById(map.get("id"));
}

Мне действительно нужно передать только «id» для POST-запрос.

Итак, из вышеперечисленных 3 случаев, что является хорошей практикой? для меня длинный идентификатор кажется разумным. Я не понимаю, в каких случаях передача карты как RequestBody намного лучше, чем DTO?

DOUBT2:

Я в настоящее время используя DTO как двунаправленный. Итак, использование двунаправленного сообщения для DTO является правильным? Буду ли я сталкиваться с какими-либо проблемами с дизайном DTO?

class UserDTO {
    long id;
    List<OrderDTO> orders;
}

class OrderDTO {
    long orderId;
    UserDTO userDTO;
}

1 Ответ

0 голосов
/ 25 апреля 2020

Итак, из вышеперечисленных 3 случаев, что является хорошей практикой? для меня длинный идентификатор кажется разумным. Я не понимаю, в каких случаях Передача Map as RequestBody намного лучше, чем DTO?

Для вышеприведенного случая, так как вам просто нужно поле id и вы хотите выполнить поиск на его основе Мое предложение будет использовать @PathVariable для него. См. Пример ниже:

@GetMapping(value="find/{id}")
public void find(@PathVariable Long id) {
    repository.findById(map.get("id"));
}

Кроме того, карта должна рассматриваться для тривиальных полезных нагрузок. Если ваша полезная нагрузка имеет сложную структуру с несколькими вложенными JSON объектами, вам следует использовать DTO.

В настоящее время я использую DTO как двунаправленные. Таким образом, использование двунаправленного текста для DTO является правильным? Буду ли я сталкиваться с какими-либо проблемами, связанными с дизайном DTO ниже?

Я не вижу проблем с использованием двунаправленных DTO, поскольку это всего лишь средство для преобразования данных вашего запроса / ответа в приложении. Если бы они были двунаправленными объектами, это было бы проблемой с сериализацией.

Надеюсь, это поможет!

...