2014-12-08 2 views
1

У меня есть поставщик RESTful API, который настаивает на использовании запроса POST с заголовком _method, установленным в DELETE, в качестве обходного пути для их вызовов DELETE, которые не работают.Как создать пользовательский заголовок, начинающийся с underscore

Это, как я думаю, что синтаксис должен быть:

response = RestClient.post("path/to/url", "{}", 
      { 
        :content_type => 'application/json; charset=UTF-8', 
        :accept => 'application/json; charset=UTF-8', 
        :'_method' => "DELETE" 
      }) 

Однако заголовок в настоящее время трансформировалась, как показано ниже, работает с RESTCLIENT_LOG = стандартный вывод

RestClient.post "<snipped>", "{}", "-Method"=>"DELETE", "Accept"=>"application/json; charset=UTF-8", "Accept-Encoding"=>"gzip, deflate", "Content-Length"=>"2", "Content-Type"=>"application/json; charset=UTF-8" 

Как можно видеть _method становится -метода , Как я могу получить заголовок клиента с ключом с именем _method, пожалуйста?

ответ

2

Похоже, что rest-client has special treatment for Symbol keys в заголовках Hash, для преобразования, например. :content_type в "Content-Type", что приятно и удобно.

Решение вашей проблемы заключается в использовании строки вместо:

response = RestClient.post("path/to/url", "{}", 
      :content_type => 'application/json; charset=UTF-8', 
      :accept => 'application/json; charset=UTF-8', 
      "_method" => "DELETE" 
      ) 
+0

Спасибо Иордан - обработано после того, как я заметил, что оставил вход: - извинения .... – Hamish258

+0

Вы уверены? В вашем вопросе вы все еще используете Символ. ':" _ method "' является символом (он начинается с ':'), тогда как '' _method "' является строкой. –

2

Попробуйте использовать строку вместо символа: "_method" => "DELETE". RestClient будет префикс (и преобразовать в строку) любые ключи символов, но оставить строковые ключи как есть. Source