So that's to say I have to use "accepted" to process the request body and then use "provided" to return a result back to client?  But If I use GET method I can both process request body and send back result in body in only "provided" function.<br><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "Loïc Hoguin";<essen@ninenines.eu>;</div><div><b>Send time:</b> Friday, Apr 10, 2015 4:00 PM</div><div><b>To:</b> "寂寂"<44290016@qq.com>; "erlang-questions"<erlang-questions@erlang.org>; <wbr></div><div></div><div><b>Subject: </b> Re: [erlang-questions] [erlang-question][cowboy] Why got 415 unsupportedmediatype when using POST method</div></div><div><br></div>"accepted" is for processing the resource representation in the request <br>body (POST/PATCH/PUT).<br><br>"provided" is for sending the resource representation in the response <br>body (GET/HEAD, though HEAD will ultimately not send it).<br><br>On 04/10/2015 10:44 AM, 寂寂 wrote:<br>> Thats' to say I should use content_types_accepted rather than<br>> content_types_provided?<br>><br>> I"m still puzzled with the difference between these two functions. when<br>> to use which?<br>><br>> Why is it ok when I use GET method with content_types_provided?<br>><br>> thanks!<br>><br>><br>> ------------------ Original ------------------<br>> *From: * "Loïc Hoguin";<essen@ninenines.eu>;<br>> *Send time:* Friday, Apr 10, 2015 3:28 PM<br>> *To:* "寂寂"<44290016@qq.com>;<br>> "erlang-questions"<erlang-questions@erlang.org>;<br>> *Subject: * Re: [erlang-questions] [erlang-question][cowboy] Why got 415<br>> unsupportedmedia type when using POST method<br>><br>> Because you didn't define a content_types_accepted function and at least<br>> one function to accept the representation in the request.<br>><br>> On 04/10/2015 04:30 AM, 寂寂 wrote:<br>>  > Dear All,<br>>  ><br>>  > If I use GET method the REST API work properly, but when I change to<br>>  > POST, got 415 error<br>>  ><br>>  > My code:<br>>  ><br>>  > -export([init/2]).<br>>  > -export([allowed_methods/2, content_types_provided/2]).<br>>  > -export([to_json/2]).<br>>  > init(Req, Opts) -><br>>  >      {cowboy_rest, Req, Opts}.<br>>  ><br>>  > allowed_methods(Req, State) -><br>>  >      {[<<"POST">>], Req, State}.<br>>  ><br>>  > content_types_provided(Req, State) -><br>>  >      {[<br>>  >        {<<"application/json">>, to_json}<br>>  >       ], Req, State}.<br>>  ><br>>  > to_json(Req, State) -><br>>  >       .....<br>>  ><br>>  > when I test the REST API I:<br>>  > curl http://192.168.1.103:8080/cloud_init -v -XPOST -H"Content-Type:<br>>  > application/json" -d '{"client_id": "4342jltj3i"}'<br>>  ><br>>  > got :<br>>  > * Hostname was NOT found in DNS cache<br>>  > *   Trying 192.168.1.103...<br>>  > * Connected to 192.168.1.103 (192.168.1.103) port 8080 (#0)<br>>  >  > POST /cloudbox_init HTTP/1.1<br>>  >  > User-Agent: curl/7.37.1<br>>  >  > Host: 192.168.1.103:8080<br>>  >  > Accept: */*<br>>  >  > content-type: application/json<br>>  >  > Content-Length: 28<br>>  >  ><br>>  > * upload completely sent off: 28 out of 28 bytes<br>>  > < HTTP/1.1 415 Unsupported Media Type<br>>  > < connection: keep-alive<br>>  > * Server Cowboy is not blacklisted<br>>  > < server: Cowboy<br>>  > < date: Fri, 10 Apr 2015 00:56:15 GMT<br>>  > < content-length: 0<br>>  > < content-type: application/json<br>>  > <<br>>  > * Connection #0 to host 192.168.1.103 left intact<br>>  ><br>>  ><br>>  > _______________________________________________<br>>  > erlang-questions mailing list<br>>  > erlang-questions@erlang.org<br>>  > http://erlang.org/mailman/listinfo/erlang-questions<br>>  ><br>><br>> --<br>> Loïc Hoguin<br>> http://ninenines.eu<br><br>-- <br>Loïc Hoguin<br>http://ninenines.eu</div>