Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best practice to have a RestController and a Controller in Spring Application

Tags:

java

rest

spring

I am not asking if it is possible, I know it is but I would like to know what's the best way to offer a rest service while having a front end in my application.

I'm developing a Spring Boot application, I currently have a controller that calls jsp pages, and a separate RestController. I want to be able to consume it with an Android application.

So is it correct to have both a Controller and a separate Restcontroller in my application? For example the Rest controller methods will be called from /api/*.


Edit : I know the difference between the two, but since I want to be able to return a view ( and I shouldn't do that with a RestController) and I want to have a rest service I am wondering if I can have both of them (separately of course).

Thank you so much in advance.

like image 730
Ouissal Benameur Avatar asked May 22 '18 14:05

Ouissal Benameur


1 Answers

I'd say that it's possible, but considered a bad practice (except for corner cases like a controller for Swagger in a REST application) in a typical, layered, spring app (will get back to that)
you may want to create a multi-module project, that may look like that:

  • parent project
    -- core
    -- web api (jsp based)
    -- rest api (for android)

both web api and rest api depend on the core.
web api and rest api are separate deployment units. you can deploy them on the same server or run as separate applications (for example using spring boot). Depends on your usecase.
with that you can have your business logic in one place (core).

you may also want to read about ports and adapters architecture, which may give you an idea how to solve this in a more organized way than just having Controllers and RestControllers sitting side by side

like image 76
Radoslaw Apreel Avatar answered Oct 17 '22 19:10

Radoslaw Apreel