Here's a simple mock for a REST service - a basic service1/status service which returns a JSON. The prefix for these automatic services (one per message) is /diesel/react/ which normally you configure as the URL+prefix of the service implementation.
When you click service1/status, the following mock rule is executed:
0 $mock:: 
 service1.status   
   .  (payload={status:"ok",someStats:"123"}) 
Note that you can't use this to serve /myStatus - here's a quick way to do that (the prefix in this case is /diesel/rest/ - see the link):
0 $mock:: 
 diesel.rest  (path == "/myStatus") 
   .  (payload={status:"ok",someStats:"123"}) 
We can use a simple path mapping, fairly common in matching REST URLs (note the special ~path operator):
Data not found:
0 $mock:: 
 diesel.rest  (path ~path "/account2/404/id") 
   diesel.flow.return  (diesel.http.response.status:Number=404=404, diesel.http.response.header.myHeader="mine"="mine") 
Success finding data:
0 $mock:: 
 diesel.rest  (path ~path "/account2/:acctId/id") 
   .  (payload={status:"ok",accountId:acctId}) 
$when:: 
 diesel.rest  (path ~path "/path2/*idpath") 
   .  (payload={status:"ok",accountId:idpath}) 
If you have complex paths to match, or if you want a custom path with anonymous elements that you ignore:
use a regular expression and the ~= operator. You can call this via an url like /getAccount/54554 :
0 $mock:: 
 diesel.rest  (path ~= "/getAccount/(\d+)") 
   .  (payload={status:"ok",someStats:"456"}) 
You can also use a custom path with named elements: use named capture groups in the regular expression - these are parsed and defined as values in the context. You can call this via an url like /getAccount1/54554 :
0 $mock:: 
 diesel.rest  (path ~= "/getAccount1/(?<acctId>\d+)") 
   .  (payload={status:"ok",someStats:"67",accountId:acctId}) 
0 $mock:: 
 diesel.rest  (path ~= "/getAccount/(\d+)") 
   ctx.set  (dieselx.x="asdf"="asdf")
   .  (payload={status:"ok",someStats:"456"}) 
You need to log in to post a comment!