Just wonder if it is possible to achieve this.
I write a sling service called /wcmapi/myservice. I want to service to handle the URLs.
1. https://locahost:4502/wcmapi/myservice/myplan
2. https://locahost:4502/wcmapi/myservice/mycontact
3.https://locahost:4502/wcmapi/myservice/myhome
The service will take the last value (myplan or mycontact or myhome) in the url as input to generate different output. since the logic is very simple and output as well, instead creating an interface and implement three services, can I combine three services into one service and use the last value in the URL mimic as selector?
Let me know if it is feasible.
Thanks.
I got it working. Can you please remove this topic. Thanks.
Views
Replies
Total Likes
Can you provide details on how you did this to help ppl looking to do this in the future.
Views
Replies
Total Likes
Define as this
@SlingServlet(paths={"/bin/myservice/home","/bin/myservice/contactus","/bin/myservice/yourplan"},
methods = "GET", metatype=true)
Use the last word as input variable. In this case, it is either home, or contactus or yourplan.
Views
Replies
Total Likes
Path is not recommended,
I am wondering why not use resource type and selector to differentiate the execution?
do you mean
/bin/myservice.home
/bin/myservice.contactus
Views
Replies
Total Likes
that is still by path
Look at this piece of document, https://sling.apache.org/documentation/the-sling-engine/servlets.html#registering-a-servlet-using-ja...
Views
Replies
Total Likes
I find this article "how to not use selector".
Sling: More About Selector Best Practices - Bots & AEM corner
Should I just create multiple services?
What's the best practice?
Views
Replies
Total Likes
I looked at that article,
I don't think they are talking about not using selector but suggestion is when things gets complicated in one service, you can have multiple service to keep it simple.
But selector is the way to go.
Views
Replies
Total Likes
Thank you for the information. It is very helpful.
However, I really like the calling URL to be /bin/myservice/home instead /bin/myservice.home. Using sling selector, the URL becomes /bin/myservice.home.
Any suggestions?
Thank you.
Views
Replies
Total Likes
Finally, I did this way, not sure if it is best practice.
@SlingServlet(paths={"/myService"},
extensions = { "json" },
methods = "GET", metatype=true)
To access this service, http://localhost:4502/myService.json/home or http://localhost:4502/myService.json/faq, home and faq is the suffix as an input parameter.
Views
Likes
Replies