CloudStreams 10.5 | webMethods CloudStreams | Administering webMethods CloudStreams | Virtual Services | Important Considerations for REST Virtual Services | Changing the HTTP Method of a REST Virtual Service
 
Changing the HTTP Method of a REST Virtual Service
 
Implications of Changing HTTP Methods
Changing HTTP Methods in Requests Dynamically Using a Context Variable
Sample XSLT Transformation for GET-to-POST or GET-to-PUT
When configuring the routing step of a REST virtual service, you specify whether to route the requests to the native service with the same HTTP method that is contained in the requests (GET, POST, PUT, DELETE), or whether to route the requests with a different HTTP method. This applies only to virtual services, not to connector virtual services.
Typically you want to pass each request to the native service with the same HTTP method that is contained in the request. For example, if a request contains a GET method, you allow the GET method to be passed to the native service. However, there might be rare cases in which you want to change the HTTP method of a request to a different HTTP method. For example, you might want to:
*Expose an XML service as a REST service.
In this case, the service you create would be a Virtual XML service that exposes the HTTP methods GET, POST, PUT and DELETE, but the routing method would always be POST.
*Expose a REST service whose virtual REST service only exposes the POST method
To change the HTTP method of a REST request, in the REST virtual service's Routing Rule step, set the value of the HTTP Method field either statically (by explicitly setting the value to GET, POST, PUT or DELETE) or dynamically (by setting the value to CUSTOM).
In order to use the CUSTOM option to set the field dynamically, you must write a IS service that sets a value of GET, POST, PUT or DELETE for a predefined context variable named ROUTING_METHOD. You need to invoke this service in the virtual service's In Sequence step. For details, see Changing HTTP Methods in Requests Dynamically Using a Context Variable.
Note:
Use this feature carefully, since changing HTTP methods to certain other HTTP methods could result in unintended results or errors. For example, changing an inbound GET request to a DELETE request would be a serious mistake if the deletion was not intended and the native REST service actually deleted a resource when invoked with a DELETE method. Additionally, an incoming POST or PUT request cannot be translated into a GET or DELETE if the request has nested elements. For more information, see Implications of Changing HTTP Methods.