Делаю REST сервис на Spring Boot.
у меня есть метод, который сохраняет обьект. У обьекта есть поле activity с типом String.
Пользователь при post запросе может в json'e ввести любое значение. Мне это не нужно, надо сделать так,чтобы пользователь мог ввести только конкретные значения(например 'active' и 'inactive') иначе показать пользователю ошибку:
"activity should be active or inactive'
Как можно сделать такую валидацию?
Также хотелось бы сделать проверку на поле Date, чтобы вводилась дата по определенному формату, а не просто набор букв
Модель обьекта:
@Entity
@Table(name = "test")
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate beginDate;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate endDate;
private String activity;
Repository:
@Repository
public interface TestRepository extends JpaRepository<Test, Integer> {
}
Service:
@Service
public class TestService {
@Autowired
private final TestRepository testRepository;
public TestService(TestRepository testRepository) {
this.testRepository = testRepository;
}
public Test saveTest(Test test) {
return testRepository.save(test);
}
}
Controller:
@RestController
@RequestMapping("/api/v1/")
public class TestController {
@Autowired
private final TestService testService;
public TestController(TestService testService) {
this.testService = testService;
}
//create test
@PostMapping("test")
public Test createTest(@RequestBody Test test) {
return testService.saveTest(test);
}
}
Post запроса выглядит так: