[99s-extend] cowboy_rest, POST and redirect

Loïc Hoguin essen at ninenines.eu
Tue Oct 29 10:09:20 CET 2013


On 10/29/2013 10:00 AM, Rolph de Ruiter wrote:
> Hi,
>
> I'm using cowboy_rest for a part of our api to handle POST requests.
> Under certain conditions, I would like to redirect to a new location
> (based on availability of the redirect qs parameter).
> I was unable to get the moved_temporarily/2 callback to work (was not
> invoked at al). So I just do the 302 myself, using cowboy_req:reply/4.
> This works, however, every time it produces an error in the emulator
> process:
>   [error] emulator Error in process <0.509.0> on node 'api at dev.loc' with
> exit value: {function_clause,[{cowboy_req,reply,[204,[],<<0
> bytes>>,{http_req,#Port<0.14491>,ranch_tcp,keepalive,<0.509.0>,<<4
> bytes>>,'HTTP/1.1',{{10,10,10,1},62197},<<15 bytes>>,undefined,8000,<<26
> bytes>>,undefined,<<14 bytes>>,[{<<8 bytes>>,<<5 bytes>>}],[{method,<<5
> bytes>>}],[{<<4 bytes>>,<<20 bytes>>},{<<10 bytes>>,<<10 bytes>>},{<<14
> bytes>>,<<2 bytes>>},{<<6 bytes>>,<<74 bytes>>},{<<6 bytes>>,<<27
> bytes>>},{<<10 bytes>>,<<120 bytes>>},{<<12 bytes>>,<<33 bytes>>},{<<7
> bytes>>,<<54 bytes>>},{<<15 bytes>>,<<17 bytes>>},{<<15 bytes>>,<<14
> bytes>>},{<<6 bytes>>,<<245 bytes>>}],[{<<14 bytes>>,34},{<<6
> bytes>>,undefined},{<<14 bytes>>,34},{<<12 bytes>>,{<<11 bytes>>,<<21
> bytes>>,[]}},{<<17 bytes>>,undefined},{<<13 bytes>>,...
>
> Can you point me out how to (ideally) make use of moved_temporarily/2 or
> how I can prevent cowboy_rest from wanting to reply with 204 in this case?

moved_temporarily is only called if the resource previously existed.

As for calling reply yourself, you just need to return {halt, NewReq, 
State} afterwards.

-- 
Loïc Hoguin
Erlang Cowboy
Nine Nines
http://ninenines.eu



More information about the Extend mailing list