我有一个通过移动应用程序访问的Rails应用程序 - 数据以JSON格式交换。
当我执行成功的POST时,我希望并获得一个HTTP代码200 OK。我不期望的是伴随1字节的数据ASCII 0x20(即空格)。
在POST的对象(设备)已经存在的情况下,我有以下代码从POST返回。
# Device is already registered, so update attributes of existing record (incl. device token)
if @deviceFound.update_attributes(params[:device])
format.html { redirect_to(@deviceFound, :notice => 'Device was successfully updated.') }
format.xml { head :ok }
# format.json { head :ok }
format.json do
render :nothing => true, :status => :ok
return true
end
else
format.html { render :action => "new" }
format.xml { render :xml => @deviceFound.errors, :status => :unprocessable_entity }
format.json { render :json => @deviceFound.errors, :status => :unprocessable_entity }
end
从注释掉的行中,你会看到我一直在使用format.json {head:ok}但是为了理解我为什么要返回这个字节,我尝试了另外的实现,我相信是等同的。两者都产生相同的HTTP 200 + 1字节数据结果。
顺便说一句,如果我在这种情况下过滤掉1个字节,在所有其他情况下我的移动应用程序与Rails应用程序交互就好了。
如果有人能解释为什么我在响应中得到一个数据字节,我会很感激吗?
谢谢。
答案 0 :(得分:2)
感谢@nickgrim回答这个问题,但是为了关闭这个问题,这里有解释......
How to return truly empty body in rails? i.e. content-length 0
很高兴知道我不会生气: - )