I'm completely new to salesforce platform. I'm yet to explore most of the features salesforce does have. Here, I'm trying to develop a mobile application which can display articles created over the Knowledge integrated into my developer salesforce instance. Say I have created one article with some data in it. Now I want to expose this data through some API suported by the salesforce platform. I figured out that salesforce supports REST, which is my preferred type of API since I'm planning to develop it for Android, and JSON will be my preferred data structure. Can salesforce experts shed some light into this? How should I go about the project.
Salesforce provides an excellent array of options for this starting from their excellent Platform Mobile Services site, where depending on your architecture preferences for your mobile client application you can choose an appropriate of SDK type. As you've pointed out, either way the Salesforce REST API is key aspect. These SDK's provide access to this API and the required authentication support.
The SDK's provide additional support and ease of use for accessing Salesforce various platform features, if your a seasoned mobile developer you may want to just refer to the SDK source code an integrate what you need. This is what the documentation has to say about the features it offers.
The Mobile SDK seamlessly integrates with the Force.com cloud architecture by providing:
• Secure offline storage
• Data syncing for hybrid apps
• Implementation of Force.com Connected App policy that works out of the box
• OAuth credentials management, including persistence and refresh capabilities
• Wrappers for Salesforce REST APIs
• Libraries for building native iOS and Android applications
• Containers for building hybrid applications
The Knowledge objects are accessed, the same way as other objects/tables in Salesforce via the REST API once the application has authenticated.
Above is the knowledge developer API guide and please refer chapter 4 (Second half).All the REST API's provided by salesforce related to knowledge module is discussed in depth.
Also using salesforce SDK will mean lot of time saving as already the code for the authentication using oauth is taken care .
There will be a sample project already built and that would
demonstrate how simple its is to get started .
For offline capabilities te Mobile SDK has smartsync (smart store)
which will securely store data in offline and its easy to write logic to start sync of the data once the device is online .
There are various templates(Native or hybrid) that would help in
building UI faster .
For testing this i would recommend using workbench as this will save time in analysing how the response will look like .