You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by andreyrikunov <an...@gmail.com> on 2013/08/02 08:56:59 UTC

Can Camel be used as RESTful API webservice client?

Say I would like to exploit Camel as a client to a RESTful web service. But
not sure Camel is good enough for such kind of job. I also want to use http4
or ahc component, not cxf.

In general I need only two kinds of routes:

- from Bean -> marshall to Json -> to Ahc with static URI -> unmarshall from
Json -> to Bean. 
Example of static uri: ahc:http://host/api/user/create

- from Bean -> marshall to Json -> to Ahc with dynamic URI -> unmarshall
from Json -> to Bean. 
Example of dynamic uri: ahc:http://host/api/user/id/1

I imagine to have a service class to fire such a routes in a manner like:

UserService {

    @Autowired
    protected CamelContext restApiCamelContext;

    public UserCreateResponse createUser (UserModel user) {
        ... Camel's magick which starts create user route ...
    } 

    public UserModel getUserById (Long id) {        
        ... the id must be placed somehow into endpoint uri:
http://host:port/api/user/id/${id} ...
        ... Camel's magick which get user by id ...
    }
}

The UserService is supposed to be used in Spring MVC controllers.

So, is it possible to implement such a UserService based on Camel's
capabilities? If yes, then will it work good under high pressure of tons of
user requests comming to a spring controller? Will it work fine with near
hundred of different uris?



--
View this message in context: http://camel.465427.n5.nabble.com/Can-Camel-be-used-as-RESTful-API-webservice-client-tp5736676.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Can Camel be used as RESTful API webservice client?

Posted by andreyrikunov <an...@gmail.com>.
>>> The idea is that UserService#getUserById will call to the external 
endpoint to actually get a user ? 
Yes, exactly. 

>>> If yes: JAX-RS can help there
Yeah, I agree, it will work fine. But I wonder if Camel is suitable for such
kind of tasks too? I can't find neither negative nor positive answer in
Camel documentation so far. 



--
View this message in context: http://camel.465427.n5.nabble.com/Can-Camel-be-used-as-RESTful-API-webservice-client-tp5736676p5736702.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Can Camel be used as RESTful API webservice client?

Posted by Sergey Beryozkin <sb...@gmail.com>.
The idea is that UserService#getUserById will call to the external 
endpoint to actually get a user ?
If yes: JAX-RS can help there, it deals with replacing the template 
variables pretty well, can be managed with the fluent API but also with 
proxies. Example, you'd initialize a client with 
"http://host:port/api/user/id/{id}" and the JAX-RS client runtime  will 
replace all variables with actual values

Cheers, Sergey
On 02/08/13 07:56, andreyrikunov wrote:
> Say I would like to exploit Camel as a client to a RESTful web service. But
> not sure Camel is good enough for such kind of job. I also want to use http4
> or ahc component, not cxf.
>
> In general I need only two kinds of routes:
>
> - from Bean -> marshall to Json -> to Ahc with static URI -> unmarshall from
> Json -> to Bean.
> Example of static uri: ahc:http://host/api/user/create
>
> - from Bean -> marshall to Json -> to Ahc with dynamic URI -> unmarshall
> from Json -> to Bean.
> Example of dynamic uri: ahc:http://host/api/user/id/1
>
> I imagine to have a service class to fire such a routes in a manner like:
>
> UserService {
>
>      @Autowired
>      protected CamelContext restApiCamelContext;
>
>      public UserCreateResponse createUser (UserModel user) {
>          ... Camel's magick which starts create user route ...
>      }
>
>      public UserModel getUserById (Long id) {
>          ... the id must be placed somehow into endpoint uri:
> http://host:port/api/user/id/${id} ...
>          ... Camel's magick which get user by id ...
>      }
> }
>
> The UserService is supposed to be used in Spring MVC controllers.
>
> So, is it possible to implement such a UserService based on Camel's
> capabilities? If yes, then will it work good under high pressure of tons of
> user requests comming to a spring controller? Will it work fine with near
> hundred of different uris?
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Can-Camel-be-used-as-RESTful-API-webservice-client-tp5736676.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>