Configuring Service Descriptor
Service Descrptor is one which define the structure of your RESTful Web Service API
<!-- Design Of ServiceDescriptor.xml -->
<service-descriptor>
<!-- General Service Properties -->
<!-- Mandatory Field -->
<property name="name">name_of_service</property>
<!-- Optional Field -->
<property name="description">description_of_service</property>
<!-- Optional Field (DEFAULT: HTTP) -->
<property name="protocol">HTTP|HTTPS</property>
<!-- Mandatory Field -->
<property name="instance">address_of_instance</property>
<!-- Optional Field -->
<property name="port">port_number</property>
<!-- Optional Field -->
<property name="context">context_of_service</property>
<!-- Requests -->
<!-- Request -->
<request>
<request>
<!-- General Request Properties -->
<!-- Mandatory Field -->
<property name="name">name_of_request</property>
<!-- Mandatory Field -->
<property name="type">GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH</property>
<!-- Mandatory Field -->
<property name="api">full_request_path</property>
<!-- Mandatory Field -->
<property name="handler">handler_of_request</property>
<!-- Optional Field (DEFAULT: SYNC)-->
<property name="mode">SYNC|ASYNC</property>
<!-- Query Parameters -->
<!-- Query Parameter -->
<query-parameters>
<query-parameter>
<!-- Mandatory Field -->
<property name="name">name_of_query_parameter</property>
<!-- Mandatory Field -->
<property name="value">value_of_query_parameter</property>
</query-parameter>
</query-parameters>
<!-- Header Parameters -->
<!-- Header Parameter -->
<header-parameters>
<header-parameter>
<!-- Mandatory Field -->
<property name="name">name_of_header_parameter</property>
<!-- Mandatory Field -->
<property name="value">value_of_header_parameter</property>
</header-parameter>
</header-parameters>
<!-- Stream of Data Under Request Body -->
<!-- It is Optional Property -->
<data-stream>stream_of_data</data-stream>
</request>
</requests>
</service-descriptor>
<!-- Android Sample: Service Descriptor -->
<service-descriptor>
<property name="name">SIMINOV-CONNECT-BOOKS-SERVICE</property>
<property name="description">Siminov Connect Books Service</property>
<property name="protocol">HTTP</property>
<property name="instance">10.0.2.2</property>
<property name="port">8080</property>
<property name="context">CONNECT-ENTERPRISE</property>
<requests>
<request>
<property name="name">GET-BOOKS</property>
<property name="type">GET</property>
<property name="api">get-books</property>
<property name="handler">siminov.connect.sample.services.GetBooks</property>
<property name="mode">SYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">ADD-BOOK</property>
<property name="type">POST</property>
<property name="api">add-book</property>
<property name="handler">siminov.connect.sample.services.AddBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">MODIFY-BOOK</property>
<property name="type">PUT</property>
<property name="api">modify-book</property>
<property name="handler">siminov.connect.sample.services.ModifyBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">DELETE-BOOK</property>
<property name="type">DELETE</property>
<property name="api">delete-book</property>
<property name="handler">siminov.connect.sample.services.DeleteBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
<header-parameter name="name">{@resource BOOK_TITLE}</header-parameter>
</header-parameters>
</request>
</requests>
</service-descriptor>
<!-- iOS Sample: Service Descriptor -->
<service-descriptor>
<property name="name">SIMINOV-CONNECT-BOOKS-SERVICE</property>
<property name="description">Siminov Connect Books Service</property>
<property name="protocol">HTTP</property>
<property name="instance">10.0.2.2</property>
<property name="port">8080</property>
<property name="context">CONNECT-ENTERPRISE</property>
<requests>
<request>
<property name="name">GET-BOOKS</property>
<property name="type">GET</property>
<property name="api">get-books</property>
<property name="handler">GetBooks</property>
<property name="mode">SYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">ADD-BOOK</property>
<property name="type">POST</property>
<property name="api">add-book</property>
<property name="handler">AddBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">MODIFY-BOOK</property>
<property name="type">PUT</property>
<property name="api">modify-book</property>
<property name="handler">ModifyBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">DELETE-BOOK</property>
<property name="type">DELETE</property>
<property name="api">delete-book</property>
<property name="handler">DeleteBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
<header-parameter name="name">{@resource BOOK_TITLE}</header-parameter>
</header-parameters>
</request>
</requests>
</service-descriptor>
<!-- Windows Sample: Service Descriptor -->
<service-descriptor>
<property name="name">SIMINOV-CONNECT-BOOKS-SERVICE</property>
<property name="description">Siminov Connect Books Service</property>
<property name="protocol">HTTP</property>
<property name="instance">10.0.2.2</property>
<property name="port">8080</property>
<property name="context">CONNECT-ENTERPRISE</property>
<requests>
<request>
<property name="name">GET-BOOKS</property>
<property name="type">GET</property>
<property name="api">get-books</property>
<property name="handler">Siminov.Connect.Sample.Services.GetBooks</property>
<property name="mode">SYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">ADD-BOOK</property>
<property name="type">POST</property>
<property name="api">add-book</property>
<property name="handler">Siminov.Connect.Sample.Services.AddBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">MODIFY-BOOK</property>
<property name="type">PUT</property>
<property name="api">modify-book</property>
<property name="handler">Siminov.Connect.Sample.Services.ModifyBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
</header-parameters>
</request>
<request>
<property name="name">DELETE-BOOK</property>
<property name="type">DELETE</property>
<property name="api">delete-book</property>
<property name="handler">Siminov.Connect.Sample.Services.DeleteBook</property>
<property name="mode">ASYNC</property>
<header-parameters>
<header-parameter name="Accept">application/xml</header-parameter>
<header-parameter name="Content-Type">application/xml</header-parameter>
<header-parameter name="name">{@resource BOOK_TITLE}</header-parameter>
</header-parameters>
</request>
</requests>
</service-descriptor>
Note: Application Developer can provide their own properties also, and by using following API's they can use properties.
Get Properties - [Android:getProperties | iOS:getProperties | Windows:GetProperties | JavaScript:getProperties]: It will return all properties associated with Application Descriptor.
Get Property - [Android:getProperty(Name-of-Property) | iOS:getProperty:Name-of-Property | Windows:GetProperty(Name-of-Property) | JavaScript:getProperty(Name-of-Property)]: It will return property value associated with property name provided.
Contains Property - [Android:containsProperty(Name-of-Property) | iOS:containsProperty:Name-of-Property | Windows:ContainsProperty(Name-of-Property) | JavaScript:containScript(Name-of-Property)]: It will return TRUE/FALSE whether property exists or not.
Add Property - [Android:addProperty(Name-of-Property, Value-of-Property) | iOS:addProperty:Name-of-Property value:Value-of-Property) | Windows:AddProperty(Name-of-Property, Value-of-Property) | JavaScript:addProperty(Name-of-Property, Value-of-Property)]: It will add new property to the collection of Application Descriptor properties.
Remove Property - [Android:removeProperty(Name-of-Property) | iOS:removeProperty(Name-of-Property) | Windows:RemoveProperty(Name-of-Property) | JavaScript:removeProperty(Name-of-Property)]: It will remove property from Application Descriptor properties based on name provided.
-
name*: Name of the service. It is Mandatory property.
-
descriptor: Description of the service. It is optional property.
-
protocol: HTTP/HTTPS. Protocol used by the service. It is optional property. Default value is HTTP
-
instance*: Instance (IP Address) of the service. It is mandatory property.
-
name*: Name of the service. It is Mandatory property.
-
port: Port number used by the service. It is optional property.
-
context: Context used by the service. It is optional property.
Properties: Properties about the Request
-
name*: Name of the Request. It is mandatory property.
-
type*: GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH. Type of API. It is mandatory property.
-
api*: Path of API. It is mandatory field.
-
handler: Handler of the API. It is mandatory property.
-
mode: SYNC|ASYNC. Mode of API. Is is optional property. Default is SYNC.
Query Parameters Properties: It is key|value pair property which define the query parameter, if any associated to the API.
-
name*: Name of Query Parameter. It is mandatory property.
-
value*: Value of Query Parameter. It is mandatory property.
Header Parameters Properties: It is key|value pair property which define the header parameter, if any associated to the API.
-
name*: Name of Header Parameter. It is mandatory property.
-
value*: Value of Header Parameter. It is mandatory property.
Data Stream: Data part under request. Is is optional property.
Note
You can specify any name for ServiceDescriptor.xml file.
![Application Data Folder Based On Name Defined] (https://raw.githubusercontent.com/Siminov/connect/docs/github/v2.0/service_descriptor_path.android.png "ApplicationDescriptor.xml file path")
![Application Data Folder Based On Name Defined] (https://raw.githubusercontent.com/Siminov/connect/docs/github/v2.0/service_descriptor_path.ios.png "ApplicationDescriptor.xml file path")
![Application Data Folder Based On Name Defined] (https://raw.githubusercontent.com/Siminov/connect/docs/github/v2.0/service_descriptor_path.windows.png "ApplicationDescriptor.xml file path")