W celach edukacyjnch tworze prosta aplikacje, ktorej zadaniem jest tworzenie dziennika treningowego tj. trainingLog zawiera exerciseLog, a exerciseLog zawiera seriesLog. Rozbiłem to na kilka kontrolerów m.in kontroler trainingLog, exerciseLog, seriesLog. Nie bardzo wiem jaki sposób mapowania api bedzie w tej sytuacji najlepszy.
Na chwile obecna mam cos takiego:
@RestController
@RequestMapping("/seriesLog")
public class SeriesLogController {
@Autowired
SeriesLogService seriesLogService;
@PostMapping("/{exerciseLog}")
@ResponseStatus(HttpStatus.CREATED)
public void addSeries(@RequestBody SeriesLog seriesLog, @PathVariable ExerciseLog exerciseLog) {
if (exerciseLog == null)
throw new ExerciseNotFoundException("cannot add series into non-existing exercise log");
seriesLogService.addSeriesToExerciseLog(seriesLog, exerciseLog);
}
}
@RestController
@RequestMapping("/exerciseLog")
public class ExerciseLogController {
@Autowired
ExerciseLogService exerciseLogService;
@PostMapping("/{trainingLog}/{exerciseTitle}")
@ResponseStatus(HttpStatus.CREATED)
public void addExerciseLog(@PathVariable TrainingLog trainingLog, @PathVariable String exerciseTitle) {
exerciseLogService.addExerciseLogToTrainingLog(trainingLog, exerciseTitle);
}
}
@RestController
@RequestMapping("/trainingLog")
public class TrainingLogController {
@Autowired
TrainingLogService trainingLogService;
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void createTrainingLog(@RequestParam LocalDate trainingDate) {
trainingLogService.addTrainingLog(trainingDate);
}
}
Drugi pomysł, to dodawanie tego wszystkiego w TrainingLogControllerze ale wtedy zrobi sie tam niezly bajzel :(