HTTP POST, голова: хорошо, возвращая 1 загадочный байт - PullRequest
1 голос
/ 15 августа 2011

У меня есть приложение 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.

Буду признателен, если кто-нибудь сможет объяснить, почему я получаю в ответ байт данных?

Спасибо.

1 Ответ

2 голосов
/ 18 августа 2011

Спасибо @nickgrim за ответ на этот вопрос, но просто чтобы закрыть его, объяснение доступно здесь ...

Как вернуть по-настоящему пустое тело в рельсы? т.е. длина содержимого 0

Хорошо знать, что я не схожу с ума: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...