[forge-dev] [aerogear-dev] Aerogear.js for CRUD

Sebastien Blanc sblanc at redhat.com
Tue Dec 17 04:25:14 EST 2013


Adding again aerogear list.
I think that we must discuss with the team (aerogear) on how we can/must 
handle a proper 201 response.

On 12/17/2013 09:58 AM, Ivan St. Ivanov wrote:
> Hi!
>
> I think that the 'right' approach is to respond with 201 (created) and 
> return a URI to the newly created resource.
>
> Cheers,
> Ivan
>
>
> On Tue, Dec 17, 2013 at 12:58 AM, Lincoln Baxter, III 
> <lincolnbaxter at gmail.com <mailto:lincolnbaxter at gmail.com>> wrote:
>
>     Either is typical, but I think that most "pure" restifarians would
>     favor the 201.
>
>
>     On Mon, Dec 16, 2013 at 5:41 PM, Burr Sutter <bsutter at redhat.com
>     <mailto:bsutter at redhat.com>> wrote:
>
>         I need to find my REST bible - what is typical to respond to
>         the POST with the JSON-serialized entity that was originally
>         POST'd or to simply respond with a basic acknowledgement (http
>         201)?
>
>
>         On Dec 16, 2013, at 4:25 PM, Vineet Reynolds Pereira
>         <vpereira at redhat.com <mailto:vpereira at redhat.com>> wrote:
>
>>         Adding forge-dev.
>>
>>         ----- Original Message -----
>>>         From: "Burr Sutter" <bsutter at redhat.com
>>>         <mailto:bsutter at redhat.com>>
>>>         To: "AeroGear Developer Mailing List"
>>>         <aerogear-dev at lists.jboss.org
>>>         <mailto:aerogear-dev at lists.jboss.org>>
>>>         Sent: Tuesday, December 17, 2013 1:59:41 AM
>>>         Subject: Re: [aerogear-dev] Aerogear.js for CRUD
>>>
>>>         That seems to do the trick - now, where do we apply the fix? :-)
>>
>>         Well, ideally this would be a feature request in Forge to
>>         support a new type
>>         of a REST resource. But a couple of modified lines might not
>>         warrant it.
>>
>>         It would be better to treat this as a flag to be enabled
>>         during REST resource
>>         scaffolding. It would allow users to choose how the resource
>>         behaves -
>>         * send a 201 response with Location header,
>>         * send a 201 response with Location header and also a
>>         response entity.
>>
>>         It would most likely be addressed in Forge 2.
>>
>>>
>>>         On Dec 16, 2013, at 3:06 PM, Vineet Reynolds Pereira <
>>>         vpereira at redhat.com <mailto:vpereira at redhat.com> >
>>>         wrote:
>>>
>>>
>>>
>>>
>>>
>>>
>>>         ----- Original Message -----
>>>
>>>
>>>         From: "Lucas Holmquist" < lholmqui at redhat.com
>>>         <mailto:lholmqui at redhat.com> >
>>>         To: "AeroGear Developer Mailing List" <
>>>         aerogear-dev at lists.jboss.org
>>>         <mailto:aerogear-dev at lists.jboss.org> >
>>>         Cc: "Vineet Reynolds Pereira" < vpereira at redhat.com
>>>         <mailto:vpereira at redhat.com> >
>>>         Sent: Tuesday, December 17, 2013 12:53:25 AM
>>>         Subject: Re: [aerogear-dev] Aerogear.js for CRUD
>>>
>>>
>>>         On Dec 16, 2013, at 1:52 PM, Burr Sutter <
>>>         bsutter at redhat.com <mailto:bsutter at redhat.com> > wrote:
>>>
>>>
>>>
>>>         Adding Vineet as he has spent time on the Forge REST
>>>         scaffolding.
>>>
>>>         On Dec 16, 2013, at 7:01 AM, Sebastien Blanc <
>>>         scm.blanc at gmail.com <mailto:scm.blanc at gmail.com> > wrote:
>>>
>>>
>>>
>>>         Burr,
>>>         I've added some logs statements on the client and basically
>>>         it seems it
>>>         can not parse the response from the server :
>>>
>>>         I/Web Console( 1386): textStatus: parsererror at
>>>         file:///android_asset/www/js/index.js:103
>>>         I/Web Console( 1386): error: SyntaxError: Unexpected end of
>>>         input at
>>>         file:///android_asset/www/js/index.js:104
>>>
>>>         If I do a CURL like this :
>>>         curl -v -b cookies.txt -c cookies.txt -H "Accept:
>>>         application/json" -H
>>>         "Content-type: application/json" -X POST -d
>>>         '{"phoneNumber":"1234567890","email":"newTest at test.com
>>>         <mailto:newTest at test.com>","name":"newTest"}'
>>>         http://agmobile-html5.rhcloud.com/rest/forge/members
>>>
>>>         I should have pointed to the sources to the REST endpoint:
>>>         https://github.com/burrsutter/agmobile/blob/master/src/main/java/com/burrsutter/agmobile/rest/MemberEndpoint.java
>>>         This was generated by Forge as I am too lazy to type up a
>>>         full CRUD REST
>>>         endpoint myself :-)
>>>
>>>
>>>
>>>         I got an correct answer but the content type is 'text/plain'
>>>         , please
>>>         check your rest endpoint to be sure it's producing json as
>>>         output, that
>>>         should solve your issue.
>>>         It says
>>>         @POST
>>>         @Consumes("application/json")
>>>
>>>         needs a @Produces("application/json")
>>>
>>>         I'm not sure that will help. The response is a HTTP 201 with
>>>         a Location
>>>         header.
>>>         Is the client expecting an entity of type application/json
>>>         in the response ?
>>>
>>>         If yes, then the method should look like:
>>>
>>>         @POST
>>>         @Consumes("application/json")
>>>         public Response create(MemberDTO dto)
>>>         {
>>>         Member entity = dto.fromDTO(null, em);
>>>         em.persist(entity);
>>>         return
>>>         Response.created(UriBuilder.fromResource(MemberEndpoint.class).path(String.valueOf(entity.getId())).build()).entity(entity).build();
>>>         }
>>>
>>>         I've added : .entity(entity) in the above method to populate
>>>         the response
>>>         with the entity.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>         Could you also paste the commands you used in Forge to
>>>         scaffold the REST
>>>         endpoints so that we can check there hasn't been an
>>>         incompatibility
>>>         introduced ?
>>>         I just used the Forge Wizard that is built into JBDS/Tools
>>>         http://screencast.com/t/QrKkCoFZMUn
>>>
>>>         error.status is 201
>>>         error.responseText is blank
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>         On Sat, Dec 14, 2013 at 6:06 PM, Burr Sutter
>>>         <bsutter at redhat.com <mailto:bsutter at redhat.com>> wrote:
>>>         I am having a problem with pipe.save(), likely user error :-)
>>>
>>>         For some reason, the POST is occurring, the save seems to
>>>         work but the
>>>         error callback is invoked, not the success method.
>>>
>>>         And I am doing all of this in the context of our tooling
>>>         which has some
>>>         limitations (auto-closing console/firebug lite)
>>>
>>>         http://screencast.com/t/gosd7Qnhz
>>>
>>>         REST endpoint:
>>>         http://agmobile-html5.rhcloud.com/rest/forge/members
>>>         Use of Forge, with the Member.java entity to offer full CRUD
>>>         capabilities
>>>
>>>         Sources:
>>>         https://github.com/burrsutter/AGContacts/blob/master/www/js/index.js
>>>
>>>
>>>         _______________________________________________
>>>         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
>>>
>>>
>>>         _______________________________________________
>>>         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
>>         _______________________________________________
>>         forge-dev mailing list
>>         forge-dev at lists.jboss.org <mailto:forge-dev at lists.jboss.org>
>>         https://lists.jboss.org/mailman/listinfo/forge-dev
>
>
>         _______________________________________________
>         forge-dev mailing list
>         forge-dev at lists.jboss.org <mailto:forge-dev at lists.jboss.org>
>         https://lists.jboss.org/mailman/listinfo/forge-dev
>
>
>
>
>     -- 
>     Lincoln Baxter, III
>     http://ocpsoft.org
>     "Simpler is better."
>
>     _______________________________________________
>     forge-dev mailing list
>     forge-dev at lists.jboss.org <mailto:forge-dev at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/forge-dev
>
>
>
>
> _______________________________________________
> forge-dev mailing list
> forge-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/forge-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/forge-dev/attachments/20131217/d7ee0700/attachment-0001.html 


More information about the forge-dev mailing list