Полезная нагрузка в Typhoeus Ruby Удалить запрос - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь отправить запрос полезной нагрузки (как в случае пост-звонка) с помощью вызова Typhoeus Delete.Насколько я знаю, последнее обновление спецификации HTTP 1.1 (RFC 7231) явно разрешает тело объекта в запросе DELETE:

A payload within a DELETE request message has no defined semantics; sending a payload body on a DELETE request might cause some existing implementations to reject the request.

Я пробовал этот код, но тело / полезная нагрузка не извлекается

    query_body = {:bodyHash => body}

    request = Typhoeus::Request.new(
        url,
        body: JSON.dump(query_body),
        method: :delete,
        ssl_verifypeer: false,
        ssl_verifyhost: 0,
        verbose: true,
    )

    request.run
    response = request.response
    http_status = response.code
    response.total_time
    response.headers
    result = JSON.parse(response.body)

С другой стороны, это происходит в зашифрованном виде, где я не могу получить его

Код другой стороны, как:

def destroy
        respond_to do |format|
            format.json do
                body_hash = params[:bodyHash]
                #do stuff
                render json: {msg: 'User Successfully Logged out', status: 200}, status: :ok
            end
            format.all {render json: {msg: 'Only JSON types are supported', status: 406}.to_json, status: :ok}
        end
    end

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я наконец просмотрел все свои запросы, в которых находился полезный груз (POST и PUT), и заметил, что я не отправлял заголовки вместе с этим запросом DELETE.

Это выглядит примерно так:

query_body = {:bodyHash => body}

    request = Typhoeus::Request.new(
        url,
        body: JSON.dump(query_body),
        method: :delete,
        ssl_verifypeer: false,
        ssl_verifyhost: 0,
        verbose: true,
        headers: {'X-Requested-With' => 'XMLHttpRequest', 'Content-Type' => 'application/json; charset=utf-8', 'Accept' => 'application/json, text/javascript, */*', 'enctype' => 'application/json'}
    )

    request.run
    response = request.response
    http_status = response.code
    response.total_time
    response.headers
    result = JSON.parse(response.body)

Просто добавив к нему заголовки, он заработал

0 голосов
/ 23 октября 2018

Позвольте мне привести спецификацию :

Полезная нагрузка в сообщении запроса DELETE не имеет определенной семантики;отправка тела полезной нагрузки по запросу DELETE может привести к тому, что некоторые существующие реализации отклонят запрос.

Я бы не сказал, что его можно вызвать как явное разрешение на отправку полезной нагрузки с запросом DELETE.Он говорит, что МОЖЕТ отправить полезную нагрузку, но обработка такого запроса остается полностью на усмотрение сервера.

И вот что происходит:

С другой стороны,он приходит в зашифрованном виде, где я не могу его получить

Почему вы не можете отправить свою полезную нагрузку как часть запроса POST, который гарантированно будет нормально обрабатываться сервером?

...