A Service Mapping Description (SMD) is a JSON representation describing web services.
Examples
{ "transport": "POST", "envelope": "URL", "target": "/service/", "additionalParameters": true, "parameters": [ { "name":"outputType", "default": "json" }, { "name":"ignoreErrors", "optional": true } ], "services": { "foo": { "transport": "GET", "target": "executeFoo.php", "parameters": [ {"name":"paramOne", "type": "string"}, {"name":"paramTwo", "type": "integer", "default": 5}, {"name":"paramThree", "type": "integer", "optional": true} ] }, "add": { "transport": "POST", "envelope": "JSON-RPC-2.0", "additionalParameters": {"type": "integer", "default": 0}, "parameters": [ {"type": "integer", "default": 0}, {"type": "integer", "default": 0} ] } } }In the above example, two methods are defined: foo and add. foo is declared to take named parameters, with a service endpoint of /service/executeFoo.php (derived as a relative URL) with url-encoded parameters. The following is an example of a valid service call for the foo method:
GET /service/executeFoo.php?paramOne=value¶mTwo\\0753&outputType=jsonThe add service is defined to use the service endpoint of /service/ (inherited from the root level), and takes positional parameters using JSON-RPC version 2.0. The following is an example of a valid service call for the add method:
POST /service/ {"id":1,"method":"add","params":[4,7,9]}Note that all service definition properties are optional. Therefore, a service could be defined:
"simple": {}and this would indicate that any parameters may be passed in, and return value can be returned.
Type Defined Sub-Services
Examples of Sub-Services
{ "services":{ "person": { "transport": "REST", "envelope": "PATH", "target": "person", "parameters": [{ "name":"id", "type": "string" }], "returns": { "type": { "id":{"type":"string" }, "firstName":{"type":"string"}, "lastName":{"type":"string"}, "age":{"type":"number","maximum":125,"minimum":0}, "address":{"type":"string"}} }, "services":{ "sendMessage": { "type": "method", "transport": "RAW_POST", "envelope": "JSON-RPC-2.0", "parameters": [ {"type": "string", "optional": true}, {"type":"object"}], "returns": {"type": "boolean"} } } } } } }
No comments:
Post a Comment