Search code examples
grailsgroovy

When and when aren't controllers necessary in grails applications?


From what I understand, grails applications with the angular profile don't technically need controllers as the domains support the http requests. So, what exactly is the point of the controller class in these grails applications?

Here is an example I am working on:

I have a Wardrobe class, and a Color Class. Wardrobes have colors, and I want the functionality to add and delete colors from specific wardrobes. However, colors may be a part of many different wardrobes.

I understand I can just add a color to a wardrobe without the controller class, by calling a post request to my 'localhost:8080/color' specifying the wardrobe. Can I also delete a color from a wardrobe with the same logic?

If this is true, why do I need a controller class? In this tutorial, I notice they leave the controller class out. https://www.djamware.com/post/5a10b5f580aca75eadc12d6c/grails-3-angular-5-profile-crud-web-application-example

Just wondering what exactly is the point of having a controller class when working with angular, and when it can be avoided and when it is needed.

Thanks


Solution

  • From what I understand, grails applications with the angular profile don't technically need controllers as the domains support the http requests.

    That is not the case. We do not support routing requests to a domain class.

    In this tutorial, I notice they leave the controller class out. https://www.djamware.com/post/5a10b5f580aca75eadc12d6c/grails-3-angular-5-profile-crud-web-application-example

    It is not really true that they left the controller out. There is a controller there, there just isn't source code for it because there doesn't need to be. The @Resource(uri='/customer') annotation on the Customer classes causes CustomerController to be created at compile time.

    Just wondering what exactly is the point of having a controller class when working with angular, and when it can be avoided and when it is needed.

    When working with Angular (or anything else that wants to send a request to the Grails app), a controller is generally the thing that will receive the request and decide what to do.