RESTful web services using Mule runtime engine
REST (Representational State Transfer) has emerged in the last few years as a predominant Web service design model. RESTful Web services are a great alternative to SOAP and WSDL Web services. REST is being adopted by mainstream Web 2.0 service providers such as Google, Yahoo and Facebook, as well as many enterprise organizations who have deprecated or passed on SOAP and WSDL-based interfaces in favor of an easier-to-use, resource-oriented model.
RESTful architectures and implementations bring the following characteristics/benefits to organizations:
- Ease of integration - RESTful applications can be easily integrated with the web as they use HTTP methods explicitly
- Increased Scalability - RESTful interactions are stateless and caching semantics are built into the protocol).
- Evolvability - All resources are identified by URIs which provides a simple way to deal with the evolution of a system.
- Reliability - RESTful systems typically achieve reliability through idempotent operations.
- Security - RESTful systems can achieve security through both the transport layer (SSL) and a variety of message-level mechanisms.
Mule runtime engine provides REST adapters and REST wrappers that are very simple to set up and configure. Configuration steps include setting up all the common parameters that characterize the RESTful web service, such as URL, HTTP method type, query parameters, and HTTP error handler.
Mule is designed to facilitate the use of Web services in the following ways:
- Web services can be hosted or consumed
- Transport decoupled from protocol, that is, you can send / receive over JMS, email, etc.
- JAX-WS or Simple services
- Web services can be proxied or modified without much code
Mule as an ESB is well suited for building RESTful applications, as it can easily bridge between the web and nearly anything else in your enterprise.
Want to know more about the future of Mule as an ESB?
The Mule development team has released new Development features to the platform, including: