Spring REST + MVC

1

JSF okazał się tak irytujący jak wszyscy pisali i nie mam zamiaru dalej rzeźbić w brązie, więc chcę przepisać swoją aplikację jako REST + Spring MVC, ale mam kilka pytań:

Tworzę dwa projekty - jeden jako backend czyli REST, baza danych, kontrolery, logika i drugi, który będzie opierał się na MVC i konsumował to co rest zwróci? Swoja drogą chodzi mi po głowie utworzenie jednej klasy Person i oznaczenie jej adnotacjami zarówno JPA jak i JSON, ale domyślam się, że to głupi pomysł?

2

Tworzę dwa projekty - jeden jako backend czyli REST, baza danych, kontrolery, logika i drugi, który będzie opierał się na MVC i konsumował to co rest zwróci

Czy w ogóle czytałeś coś o Springu? Bo to co zacytowałem świadczy, że nie bardzo masz pojęcie o czym piszesz. REST jest to podejście wykorzystujące zapytania HTTP, jeśli byś był łaskawy spojrzeć na Spring MVC to zobaczyłbyś, że kontrolery mają adnotację @RequestMapping w której konfigurujesz np. dla jakiego zapytania HTTP konkretna metoda jest wywoływana.

Przykład:

 
@Controller
@RequestMapping(value = "/actors")
public class ActorController {

    @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public List<ActorDTO> findAll() {
        return MapperHelper.mapToList(actorToDtoLazyMapper, actorService.findAll());
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public ActorDTO find(@PathVariable long id) throws ResourceNotFoundException {
        return actorToDtoMapper.map(actorService.find(id));
    }

    @RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public ActorDTO create(@Valid @RequestBody ActorDTO actorDTO) {
        Actor actor = new Actor(actorDTO.getFirstName(), actorDTO.getLastName());
        return actorToDtoMapper.map(actorService.create(actor));
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public ActorDTO edit(@Valid @RequestBody ActorDTO actorDTO, @PathVariable long id) throws ResourceNotFoundException {
        actorDTO.setId(id);
        Actor newActor = dtoToActorMapper.map(actorDTO);
        return actorToDtoMapper.map(actorService.update(newActor));
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE,  produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public void delete(@Valid @PathVariable long id) throws ResourceNotFoundException {
        actorService.delete(id);
    }

}
0

@NoZi
Wiem, ale większość tutoriali jest rozbita na dwie części, więc wyszedłem z założenia że jest jakiś powód żeby to właśnie tak rozbić (no chyba, że zrobili tak tylko dla uproszczenia) po wpisaniu do googla pierwszy temat na SO traktował o wykorzystaniu rest template co wydało mi się dość dziwne, bo trochę by się klocki MVC pogubiły zostawiając praktycznie samo V więc wolałem dopytać

1

Dodatkowo możesz poczytać o Spring Data Rest i HATEOAS

1 użytkowników online, w tym zalogowanych: 0, gości: 1