Creating a REST API based application in SMP2.3
For the past few days, I have been playing around with SMP2.3 and exploring its different features. From SUP2.2 onwards, the platform provides REST APIs that act as a proxy to a variety of application endpoints and provides common mobile application functionality like device on boarding, user authentication, push configuration, tracing and supportability amongst others.
In this document, I have documented the steps required to create a REST API based application in SMP2.3 and then validate the same via a REST Client Tool. I have also explained the steps to create an application connection and validate the same within SAP Control Center. Hope this is useful.
Create an Application
1. Click Applications on the left pane and Applications tab on the right tab
2. Click New
3. Enter the following values
Application ID : com.sap.poc.restapi Display name : RESTAPI Description : REST API App Client SDK Type: REST API Security Configuration: admin Domain: default Base Template: Default Application Endpoint: http://localhost/restpoc ( this should be your external rest webservice. It could be an odata or non data REST Service). This is also called as whitelisting Push Endpoint: Leave it as is |
The application id will be the application identifier while accessing the external service.
4. Click OK
5. A new application with the name com.sao.poc.restapi is now created in the default domain
6. Open Domain -> default -> Applications to confirm that an application is created
Validating the Proxy Connection
In the previous step, we created an REST API based application. Let us now make sure the application is working (meaning the connection is indeed being proxied through the SMP Mobile Server). For this example, I have used the REST Client from Wiztools. You can download it for free from the following location: http://code.google.com/p/rest-client/downloads/list
1. Open the RESTClient and type the url as : http://<SMPServer>:<ProxyPort>/<ApplicationID> Typically the Proxy would be 8000, 8001 or 5001. Application ID would be the Application id created earlier.
- Select HTTP Method as Get
- Select Auth as Basic and type the SCC admin Username/Password ( typically supAdmin/s3pAdmin
- Submit the Http request
- You should receive an HTTP/1.1 200 OK as the status – this confirms that the you have successfully used SMP REST API to proxy a connection onto an external service
- Make note of the Http headers and body that is sent back as Http response
Creating an Application Connection
The next validation test is to create an application connection in SMP2.3. Using the RESTClient tool again, submit the following HTTP request.
http://<SMPServer>:<ProxyPort>/odata/applications/v1/com.sap.poc.restapi/Connections Method : POST Header: ” X-SUP-DOMAIN” = “default” ( you could also not pass any param/value as it will by default point to the default SMP Domain) Username: <SUP Admin User> Password : <SUP Adminpwd> |
The following request body needs to be sent along with the HTTP request.
<?xml version=”1.0″ encoding=”UTF-8″?> <entry xmlns=”http://www.w3.org/2005/Atom“ xmlns:m=”http://schemas.microsoft.com/ado/2007/08/dataservices/metadata“ xmlns:d=”http://schemas.microsoft.com/ado/2007/08/dataservices“> <content type=”application/xml”> <m:properties> <d:DeviceType>iPhone</d:DeviceType> </m:properties> </content> </entry> |
A status of HTTP/1.1 201 CREATED should be returned from the server. In, click on Applications. In the Application Connections tab on the right pane, a new application connection should now be created.
Good one. Thanks
- Midhun VP
nice sample to try. thank you.
Thanks Howard!!
good blog buddy !!!
thanks for the post 🙂
one suggestion - is this the right space for the post or will it get better visibility under http://scn.sap.com/community/mobile/content ?
Hi Brijesh Pati
I created an Application and we selected LDAP security profile
and In "REST Client" when i submit URL ( http://mobdev1:8000/com.sap.ibase )
, it is giving connection refused error message at Netweaver gateway URL.
What extra we nee to do.
Great..
Thanks,
Syam
Very nice blog.
Thanks,
Warm Regards
Hemendra
Nice blog
Is it possible to give an external restservice like http://localhost/restpoc?email=test@xxx.com&age=12
where age and test has to be taken from the user
Thanks
Jestin
What happens if you loose the connection ID created during registration? Can a send another request to get my connection ID from an existing registration?
Right now I store registration response in local storage. If local storage is cleared, how can I get the connection information again? Do I need to do another registration? If so, how to delete the old without current connection info?