[aerogear-dev] Paging Demo

Bruno Oliveira bruno at abstractj.org
Thu Jan 10 05:54:46 EST 2013


+1 


-- 
"The measure of a man is what he does with power" - Plato
-
@abstractj
-
Volenti Nihil Difficile



On Thursday, January 10, 2013 at 8:02 AM, Matthias Wessendorf wrote:

> On Thu, Jan 10, 2013 at 10:11 AM, Daniel Bevenius
> <daniel.bevenius at gmail.com (mailto:daniel.bevenius at gmail.com)> wrote:
> > > For the demo purpose, we could bootstrap the list of cars during startup so
> > > we don't need to manually add all the cars.
> > > 
> > 
> > Absolutely, that would be no problem.
> > 
> 
> 
> +1 - that would make it easier to test/develop
> 
> > 
> > 
> > 
> > 
> > On 10 January 2013 10:06, Sebastien Blanc <scm.blanc at gmail.com (mailto:scm.blanc at gmail.com)> wrote:
> > > 
> > > Great !
> > > For the demo purpose, we could bootstrap the list of cars during startup
> > > so we don't need to manually add all the cars.
> > > Seb
> > > 
> > > 
> > > 
> > > On Thu, Jan 10, 2013 at 10:02 AM, Daniel Bevenius
> > > <daniel.bevenius at gmail.com (mailto:daniel.bevenius at gmail.com)> wrote:
> > > > 
> > > > We talked about paging yesterday on IRC, and it was decided to add a
> > > > paging example to aerogear-controller-demo. What follows is an example to
> > > > kick of further discussion about what the example should look like.
> > > > 
> > > > AeroGear Controller Demo Paging Route
> > > > 
> > > > This page discusses AEROGEAR-795 which is about adding an example to
> > > > aerogear-controller-demo to demonstrate paging support so that the client
> > > > libraries (Android, JavaScript, and iOS) can be tested against it.
> > > > 
> > > > This is only a suggestion and the implementation and the names of the
> > > > query parameters can all be changed.
> > > > 
> > > > Use case
> > > > 
> > > > The example is using cars as the resource to interact with. To be able to
> > > > query we need something to query, so lets start by adding some cars by
> > > > posting.
> > > > 
> > > > Adding Cars
> > > > 
> > > > URL="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo"
> > > > 
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Black&car.brand=BMW" -X
> > > > POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Red&car.brand=Ferrari"
> > > > -X POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Blue&car.brand=Skoda"
> > > > -X POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Green&car.brand=Audi"
> > > > -X POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Yello&car.brand=Opel"
> > > > -X POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Pink&car.brand=Mini" -X
> > > > POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Gray&car.brand=Nissan"
> > > > -X POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Red&car.brand=Volvo" -X
> > > > POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Blue&car.brand=Saab" -X
> > > > POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Black&car.brand=Mazda"
> > > > -X POST "$URL/cars"
> > > > curl -i --header "Accept: application/json" -H "Content-type:
> > > > application/x-www-form-urlencoded" --data "car.color=Yello&car.brand=Golf"
> > > > -X POST "$URL/cars"
> > > > 
> > > > The example uses an in-memory database so the data will be cleared upon
> > > > redployment/restart of the server. So you only need to populate/post when
> > > > you've restared or redployed.
> > > > 
> > > > With the cars in place, we can now issue GET requests with paging query
> > > > parameters. The following route has been added to the demo:
> > > > 
> > > > route()
> > > > .from("/cars")
> > > > .on(RequestMethod.GET)
> > > > .produces(MediaType.JSON.toString())
> > > > .to(Cars.class).get(param("page", "0"), param("perPage", "-1"));
> > > > 
> > > > From this we can see that there are two optional parameters, page and
> > > > perPage. If these are not specified all cars will be returned.
> > > > 
> > > > Getting a page of Cars
> > > > 
> > > > URL="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo"
> > > > curl -i --header "Accept: application/json" "$URL/cars?page=0&perPage=4"
> > > > 
> > > > The request will return:
> > > > 
> > > > {
> > > > "metadata":{"page":0,"perPage":4},
> > > > "cars":[
> > > > {"color":"Black","brand":"BMW","id":1},
> > > > {"color":"Red","brand":"Ferrari","id":2},
> > > > {"color":"Blue","brand":"Skoda","id":3},
> > > > {"color":"Green","brand":"Audi","id":4}
> > > > ],
> > > > "links":{
> > > > "first":"cars?page=0&page=4",
> > > > "previous":"cars?page=0&page=4",
> > > > "next":"cars?page=1&page=4"
> > > > }
> > > > }
> > > > 
> > > > Getting the next page of Cars
> > > > 
> > > > To get the next page you can follow the next link:
> > > > 
> > > > URL="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo"
> > > > curl -i --header "Accept: application/json" "$URL/cars?page=1&perPage=4"
> > > > 
> > > > {
> > > > "metadata":{"page":1,"perPage":4},
> > > > "cars":[
> > > > {"color":"Yello","brand":"Opel","id":5},
> > > > {"color":"Pink","brand":"Mini","id":6},
> > > > {"color":"Gray","brand":"Nissan","id":7},
> > > > {"color":"Red","brand":"Volvo","id":8}
> > > > ],
> > > > "links":{
> > > > "first":"cars?page=0&page=4",
> > > > "previous":"cars?page=0&page=4",
> > > > "next":"cars?page=2&page=4"
> > > > }
> > > > }
> > > > 
> > > > Get all Cars
> > > > 
> > > > URL="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo"
> > > > curl -i --header "Accept: application/json" "$URL/cars"
> > > > 
> > > > Get a single Car
> > > > 
> > > > URL="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo"
> > > > curl -i --header "Accept: application/json" "$URL/cars/1"
> > > > 
> > > > The request will return:
> > > > 
> > > > {"color":"Black","brand":"BMW","id":1}
> > > > 
> > > > Again, anything here can be changed, the name of the query parameters,
> > > > the implementation, and what is returned.
> > > > 
> > > > Reference:
> > > > 
> > > > Paging Support in AeroGear Controller
> > > > 
> > > > 
> > > > _______________________________________________
> > > > aerogear-dev mailing list
> > > > aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> > > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
> > > > 
> > > 
> > > 
> > > 
> > > _______________________________________________
> > > aerogear-dev mailing list
> > > aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
> > > 
> > 
> > 
> > 
> > _______________________________________________
> > aerogear-dev mailing list
> > aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> > https://lists.jboss.org/mailman/listinfo/aerogear-dev
> > 
> 
> 
> 
> 
> -- 
> Matthias Wessendorf
> 
> blog: http://matthiaswessendorf.wordpress.com/
> sessions: http://www.slideshare.net/mwessendorf
> twitter: http://twitter.com/mwessendorf
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
> 
> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20130110/d46b1e22/attachment-0001.html 


More information about the aerogear-dev mailing list