Как лучше всего обрабатывать создание моей сущности с помощью HTTP-запроса? Должен ли я отправлять идентификаторы в теле, в параметрах запроса? Должен ли я просто отправить весь объект?
Когда мы создаем новую запись в базе данных, мы не отправляем Id в запросе, Id будет сгенерирован автоматически на основе стратегии определено в @GeneratedValue
при сохранении объекта с помощью orderRepository.save(order);
Вам просто нужно передать объект с требуемыми деталями, которые вы хотите сохранить.
Идеальный способ получить полезную нагрузку для @RequesetBody
с помощью DTO . Мы можем создавать DTO в соответствии с требованиями и можем указывать идентификаторы типа Long или необходимые вместо использования всего объекта, такого как Customer
и Employee
public class OrderDTO {
private Long id;
@NotBlank
@NotNull
private String description;
@NotBlank
@NotNull
private Status status;
@NotNull
private Employee employeeId;
@NotNull
private Long customerId;
protected Order() {}
public Order(...) {
...
}
}
Полезная нагрузка запроса будет:
{
"id" : null,
"description" : "payload using DTO",
"status" : "yourStatus",
"employeeId" : 1,
"customerId" : 2
}
В этом случае, если я отправлю идентификаторы отдельно, я считаю, что аннотация @Valid сработает как недействительная, поскольку в теле не будет объектов, которые запрашивает модель (Employee и Customer, в моем case)
@Valid
проверил ограничения, которые мы указали для модального / DTO, используемого в @RequestBody