【发布时间】:2013-06-06 12:28:58
【问题描述】:
如何在我的 REST POST 资源中设置状态码。
现在我正在这样做
make_post(Req, State) ->
lager:info("post"),
Resp = cowboy_req:set_resp_body(<<"HELLO POST\n">>, Req),
{ok, Resp3} = cowboy_req:reply(201, Resp),
{true, Resp3, State}.
但我收到这样的错误:
1:43:10.510 [info] [nonode@nohost#pbshare_logic_registration#] [handle_info#35]:从 退出逻辑原因:{function_clause,[{cowboy_req,reply,[ 204,[],>,{http_req,#Port,ranch_tcp,keepalive,,>,'HTTP/1.1',{{127,0,0 ,1},50024},>,undefined,8080,>,[>],>,undefined,[ ],[{>,>},{>,>},{>,/">>},{>,>},{>,>}],[{>,14},{>,未定义},{>,14},{>,{>,>,[]}},{ >,undefined},{>,undefined},{>,undefined},{>,undefined} ,{>,[{{">>,">>,[]},1000,[]}]}],未定义,[ {charset,undefined},{media_type,{>,>,[]}}],done,undefined,>,false,done,[],>,未定义}],[{文件,"src/cowboy_req.erl"},{line,948}]},{cowboy_rest,respond,3,[{file,"src/cowboy_rest.erl"},{line,1085}]},{cowboy_rest,升级,4,[{file,"src/cowboy_rest.erl"},{line,75}]},{cowboy_protocol,execute,4,[{file,"src/cowboy_protocol.erl"},{line,523} ]}]} 21:43:10.510 [错误] [Undefined#Undefined#emulator] [Undefined#Undefined]:进程 中的错误,退出值:{function_clause,[{cowboy_req,reply,[204,[],>,{http_req,#Port,ranch_tcp,keepalive,,>,'HTTP/1.1',{{127,0,0,1},50024} ,>,未定义,8080,>,[>],>,未定义,[],[{>,>},{>,>},{>,>},{>,>},{>,>}],[{>,14},{>,未定义},{>,14},{>,{>,>,[]}},{>,未定义},{>,undefined},{>,undefined},{>,undefined...
在我回复后,牛仔似乎再次尝试发送回复。但是我在 API 中没有任何其他可以更改状态代码的方法。
【问题讨论】:
-
在你的代码中,set_response_body 是做什么的?它应该和 cowboy_req:set_response_body/2 做同样的事情吗?
-
是的,它确实 Resp3 = cowboy_req:set_resp_body(>, Req)
-
我不太清楚你在说你的 set_response_body 做了什么——你介意把它添加到你的问题中吗?
-
我修改了我的问题并添加了cowboy_req:set_resp_body。