Client wants to create a mobile application, now asks for JSON endpoints to fetch datas from your Drupal website. The easiest route has always been to create a menu route and a callback. Easy to work and we have control. In this setup things gets complicated when:
- All these requests can only be accessed by logged in user.
- Coding gets messy: Like you want to through an output of a view. In some harsh setup we had to get views result set then manually handled output. There are few supportive modules like views_data_export.
- Need more fine grained control based on permission.
- Today its json later they might ask for SOAP layer.
A scratch ( i call this) solution may seem attractive and faster but in a large system it all depends on the architecture you set up.
Services module provides robust base for mobile application to website communication. It provides multiple interfaces : XML, JSON etc. It ships with few helpful resources: user, node, views etc. Then you can create custom resource that can be exposed via services.
Here are few lessons I learnt during integration [ More to come ]:
I used session authentication. Services module has a huge handbook that covers in details. But it took some time for me get hang on authentication. Here is gist that based on guzzle which shows sample request to drupal7 services.