У меня есть приложение 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.
Буду признателен, если кто-нибудь сможет объяснить, почему я получаю в ответ байт данных?
Спасибо.