On Thu, Jan 10, 2013 at 10:11 AM, Daniel Bevenius
<daniel.bevenius(a)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.
On 10 January 2013 10:06, Sebastien Blanc <scm.blanc(a)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(a)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-de...
>>
>> 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-de...
>> 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-de...
>> 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-de...
>> curl -i --header "Accept: application/json" "$URL/cars"
>>
>> Get a single Car
>>
>>
URL="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-de...
>> 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(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>
_______________________________________________
aerogear-dev mailing list
aerogear-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/aerogear-dev