[aerogear-dev] Paging Demo

Matthias Wessendorf matzew at apache.org
Thu Jan 10 05:02:31 EST 2013


On Thu, Jan 10, 2013 at 10:11 AM, Daniel Bevenius
<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> 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> 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
>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>
>>
>>
>> _______________________________________________
>> aerogear-dev mailing list
>> aerogear-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>
>
> _______________________________________________
> aerogear-dev mailing list
> 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


More information about the aerogear-dev mailing list