[Flow] Curl PUT doesn't works

Adriano Fialho afialho.com at gmail.com
Sat Mar 15 23:36:15 CET 2014


The following solution worked for me! But...

Making rest cross-domain requests (with curl or AngularJs + cors) with the
request URL:
http://myRestServer.com/myRestURL/object/ (instead
http://myRestServer.com/myRestURL/object/objectID)

and sending params:
object[field]=any&object[__identity]=1234

It works fine for me! \o/

But I'm still looking for a solution for PUT cross-domain with the url
request
http://myRestServer.com/myRestURL/object/objectID

Using AngularJs + Cors Ajax, the PUT method, send previously a request with
OPTIONS method. So we have to implement this method on our Flow
RestController, cause then didn't support that.


Regards,

--

*Adriano Fialho*
71 8637.3450 - 71 9335.9343
afialho.com - adriano at afialho.com


On Fri, Mar 14, 2014 at 5:42 PM, Adriano Fialho <afialho.com at gmail.com>wrote:

> Thx! But doesn's work for me. :(
>
> --
>
> *Adriano Fialho*
> 71 8637.3450 - 71 9335.9343
> afialho.com - adriano at afialho.com
>
>
> On Fri, Mar 14, 2014 at 3:00 PM, Rémy DANIEL <dogawaf at no-log.org> wrote:
>
> > Hi
> >
> > I went through this last night.
> > If I remember, the identity in the url overrides the body, so it is the
> > original object which is passed to updateAction, not the updated one.
> >
> > This is explained here : http://forge.typo3.org/issues/45290
> >
> > I had to add objectType to my route, like this :
> >
> > -
> >   name: 'Person single GET/POST/DELETE/PUT'
> >   uriPattern: 'persons/{person}'
> >   defaults:
> >     '@package': 'Blueline.api'
> >     '@controller': 'Person'
> > *  routeParts:*
> > *    'person':*
> > *      objectType: 'Blueline\Core\Domain\Model\Person'*
> >
> >
> >
> >
> >
> > --
> > Rémy
> >
> >
> > 2014-03-14 15:44 GMT+01:00 Adriano Fialho <afialho.com at gmail.com>:
> >
> > > Got it!
> > >
> > > In the end, what should I do to perform a update via PUT / Curl? (this
> is
> > > what I'm trying to do).
> > >
> > > kind regards
> > >
> > > --
> > >
> > > *Adriano Fialho*
> > > 71 8637.3450 - 71 9335.9343
> > > afialho.com - adriano at afialho.com
> > >
> > >
> > > On Fri, Mar 14, 2014 at 11:36 AM, Carsten Bleicker <
> carsten at bleicker.de
> > > >wrote:
> > >
> > > > maybe i am wrong, but sending put to uri wich contains the identity
> as
> > > > {contact}
> > > > will result in a mapping by identifier. no further merging of post
> > > > arguments here.
> > > > this you have to make it arives as an array holding the __identity.
> > > >
> > > > correct me if i am wrong
> > > >
> > > >
> > > >
> > > > Am 14.03.2014 um 15:02 schrieb Adriano Fialho <afialho.com at gmail.com
> >:
> > > >
> > > > > My apologies for not having pasted the complete data.
> > > > >
> > > > > All others curl methods (POST, DELETE, GET) works fine. Only PUT
> > > doesn't.
> > > > >
> > > > > *My route:*
> > > > > -
> > > > >  name: 'Contatos de Marketing'
> > > > >  uriPattern:
> > 'rest-api/apimentimarketing/contact/{contact}(/{@action})'
> > > > >  defaults:
> > > > >    '@controller': 'RestAPI\Contact'
> > > > >    '@action':     'index'
> > > > >
> > > > > *My controller: *(only updateAction above)
> > > > > namespace Apimenti\Marketing\Controller\RestAPI;
> > > > >
> > > > > use Apimenti\Marketing\Domain\Model\Contact;
> > > > > use TYPO3\Flow\Annotations as Flow;
> > > > > use TYPO3\Flow\Mvc\Controller\RestController;
> > > > >
> > > > >
> > > > > /**
> > > > > * @Flow\Scope("singleton")
> > > > >  * @author Adriano Fialho <adriano at apimenti.com.br>
> > > > > */
> > > > > class ContactController extends RestController {
> > > > > protected $defaultViewObjectName =
> > 'TYPO3\\Flow\\Mvc\\View\\JsonView';
> > > > > protected $resourceArgumentName  = 'contact';
> > > > >
> > > > >        /**
> > > > > * @param \Apimenti\Marketing\Domain\Model\Contact $contact
> > > > > * @Flow\IgnoreValidation("$contact")
> > > > > * @return void
> > > > > */
> > > > > public function updateAction(Contact $contact) {
> > > > >               try {
> > > > > $this->contactRepository->update($contact);
> > > > > $this->response->setStatus(200);
> > > > > } catch (\Exception $e) {
> > > > > $this->view->setVariablesToRender(array('response'));
> > > > > $this->response->setStatus(400);
> > > > > $this->view->assign('response', array('error' =>
> $e->getMessage()));
> > > > > }
> > > > >        }
> > > > > }
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > *Adriano Fialho*
> > > > > 71 8637.3450 - 71 9335.9343
> > > > > afialho.com - adriano at afialho.com
> > > > >
> > > > >
> > > > > On Fri, Mar 14, 2014 at 10:42 AM, Carsten Bleicker <
> > > carsten at bleicker.de
> > > > >wrote:
> > > > >
> > > > >> why do you have identity in your uri and also in body arguments?
> > > > >> also your controller action seems not to have any annotations wich
> > > type
> > > > of
> > > > >> is $contact.
> > > > >> please also show the route.
> > > > >>
> > > > >> example:
> > > > >> /**
> > > > >> * @param Contact $contact
> > > > >> */
> > > > >> public function updateAction(Contact $contact){}
> > > > >>
> > > > >>
> > > > >> example route for your request could be:
> > > > >> -
> > > > >>  name:  'Artist Rest'
> > > > >>  uriPattern: 'contact/{contact.__identity}
> > > > >>  httpMethods: ['PUT']
> > > > >>  defaults:
> > > > >>    '@package':    'Acme.Foo'
> > > > >>    '@controller': 'Contact'
> > > > >>    '@action':     'list'
> > > > >>    '@format':     'json'
> > > > >>
> > > > >> note: route untested
> > > > >>
> > > > >>
> > > > >>
> > > > >> Am 14.03.2014 um 14:31 schrieb Adriano Fialho <
> > afialho.com at gmail.com
> > > >:
> > > > >>
> > > > >>> *My request:*
> > > > >>> curl -X PUT -d "contact[name]=New name&contact[__identity]=12345"
> > > > >>> http://myservice.com/contact/12345
> > > > >>>
> > > > >>> *And my rest controller update action:*
> > > > >>> public function updateAction($contact){
> > > > >>>   MyRepository->update($contact)
> > > > >>> }
> > > > >>>
> > > > >>>
> > > > >>>
> > > > >>> --
> > > > >>>
> > > > >>> *Adriano Fialho*
> > > > >>> 71 8637.3450 - 71 9335.9343
> > > > >>> afialho.com - adriano at afialho.com
> > > > >>>
> > > > >>>
> > > > >>> On Fri, Mar 14, 2014 at 9:50 AM, Adriano Fialho <
> > > afialho.com at gmail.com
> > > > >>> wrote:
> > > > >>>
> > > > >>>> People,
> > > > >>>>
> > > > >>>> I tried to do a PUT request with php curl to my Flow
> > RestController,
> > > > >> but it
> > > > >>>> doesn't works. The request is executed sucessfully, but the
> > > > >> updateAction on
> > > > >>>> my controller can't update my object on repository.
> > > > >>>>
> > > > >>>> Do you know anything about that?
> > > > >>>>
> > > > >>>> --
> > > > >>>>
> > > > >>>> *Adriano Fialho*
> > > > >>>> 71 8637.3450 - 71 9335.9343
> > > > >>>> afialho.com - adriano at afialho.com
> > > > >>>> _______________________________________________
> > > > >>>> Flow mailing list
> > > > >>>> Flow at lists.typo3.org
> > > > >>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> > > > >>>>
> > > > >>> _______________________________________________
> > > > >>> Flow mailing list
> > > > >>> Flow at lists.typo3.org
> > > > >>> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> > > > >>
> > > > >> _______________________________________________
> > > > >> Flow mailing list
> > > > >> Flow at lists.typo3.org
> > > > >> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> > > > >>
> > > > > _______________________________________________
> > > > > Flow mailing list
> > > > > Flow at lists.typo3.org
> > > > > http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> > > >
> > > > _______________________________________________
> > > > Flow mailing list
> > > > Flow at lists.typo3.org
> > > > http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> > > >
> > > _______________________________________________
> > > Flow mailing list
> > > Flow at lists.typo3.org
> > > http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> > >
> > _______________________________________________
> > Flow mailing list
> > Flow at lists.typo3.org
> > http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
> >
> _______________________________________________
> Flow mailing list
> Flow at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
>


More information about the Flow mailing list