1
votes

Background: We're creating an offer for an Xamarin app for a customer, which is using AEM to manage a lot of content. We are not experienced with AEM, therefore I have the task to find the possibilities regarding a Web connection and how deep into AEM we need to interfere, to get the desired data. Usually, I would never ask such a general question here, but after some hours of research, I didn't find any hint regarding a public API:

So, my question: Is there just no Web API at all? Or is one of the subproducts of AEM the endpoint, we could use to get data?

1
you are going to need (at least initially) some support from someone who knows aem and customer's setup. AEM provides web api but most of them would be blocked at dispatcher, and a bit of config is needed to access, here is a fairly technical video around this - helpx.adobe.com/experience-manager/kt/eseminars/gems/… - awd
Most of this content can be consumed as JSON, using a selector. Just make sure to ask to enable these requests at the dispatcher level (The dispatcher is a module provided by Adobe, typically installed along Apache, which cache requests and also allow/block requests meeting certain criteria). - ronnyfm

1 Answers

1
votes

Based on the fact that you mentioned Xamarin I guess you are supposed to work on a mobile app.

You basically have four options, if you want to build that using AEM:

  1. Use the Single Page Application (SPA) capabilities of AEM (requires AEM 6.4):
  2. Use the (legacy) PhoneGap capabilities of AEM.
  3. Use the out-of-the-box Sling APIs to expose the data you need and use them in your Xamarin app.
  4. Write a custom (web service) API and use that in your Xamarin app.

I would strongly suggest to have a look at the SPA support or PhoneGap capabilities if you are not running AEM 6.4.

Working with the Sling API or building your own API is not the best option if you are new to AEM. There are so many pitfalls that will cause you a lot of headaches and you run the risk of creating an unmaintainable mess of an AEM project.